altRobots
/robotigs/icons/actuator.pngActuatoren
/robotigs/icons/printboards.pngAlgemeen
/robotigs/icons/chassis.pngChassis
/robotigs/icons/florigs.pngFlorigs
/robotigs/icons/interfacing.gifInterfacing
/robotigs/icons/microphone_icon.pngMuziek
/robotigs/icons/musicKey_icon.pngMuzikanten
/robotigs/icons/shield.pngSchildjes
/sys/icons/sensors.pngSensors
/robotigs/icons/languages.pngTalen
/robotigs/icons/battery.pngVoedingen
/sys/icons/microController.pngµControllers
altContact
Linux installatie"); echo ("  "); } ?>  "); /* echo (""); echo (" "); //Show pencil as button */ ?> alt  

Deze pagina is verouderd. Ga naar de vernieuwde pagina.

"); $counter = 0; $aantal = str_word_count($pict_list, 0, "0123456789"); $lijst = str_word_count($pict_list, 1, "0123456789"); while($counter < $aantal){ $pictkey = $lijst[$counter]; $qryy1 = ("SELECT * FROM illustrations WHERE ill_id = $pictkey ;"); $resulty1 = pg_query($con1, $qryy1); while($row = pg_fetch_array($resulty1)){ //Fields accesible by their name foreach( $row AS $key => $val ){ $$key = stripslashes( $val ); } } $image = ("/robotigs/documentatie/plaatjes/$ill_name"); $pictfull = str_replace('_small', '', $image); //Pictfull=biggest version $alt = ("Just wait till your 57...."); $txtname = get_txt($con1, 18, $koekje[2], $ill_id); //Robot illustrations subtitles echo (""); echo (''. $alt .'
'); $nummer = $counter + 1; $txtAfb = get_txt($con1, 9, $koekje[2], 3865); //Pic Afb if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates echo ("$txtAfb $nummer: "); echo ("$txtname"); echo ("
"); echo ("Ontkoppelen "); if ($counter==0){ echo ("Up "); }else{ echo ("Up "); } if ($nummer == $aantal){ echo ("Down"); }else{ echo ("Down"); } }else{ //Else of if Meaning the current useer is logged in echo ("$txtAfb $nummer: $txtname"); } echo ('

'); //End of this picture $counter++; //Prepair for next picture } echo (''); //All pictures are printed } //End of if there are 1 or more pictures to be printed ---------------------- ?>

Vorige: Robot pc Home Volgende: Apache2

Linux (wiki) als Operating Systeem voor de PC in de robot is om diverse redenen geschikt. Linux is licentievrij en het sluit naadloos aan op de hardware. Alhoewel ik vaak met Linux werk en deze beschrijving dus ook over Linux gaat kunnen de meeste elementen ook onder Windows worden geïnstalleerd. Binnen Linux kan worden gekozen uit verschillende distributies (distrowatch). Ik heb hier gekozen voor Ubuntu (home) omdat het gratis, simpel en snel is. Het is met de installatie cd of USB stick bovendien makkelijk te testen zonder iets aan uw Windows computer te veranderen of te installeren.
  • Seriële poorten vrijgeven
  • Seriële poorten worden onder Linux gezien alsof het bestanden zijn van het soort /dev/ttyUSB0. Zij hebben daardoor ook Permissions en Eigenaren etc. Als je een python3 programma start als sudo dan zullen de poorten openen, maar niet als gewone user.
    dmesg | grep ttyU laat alle mogelijke seriële poorten zien.
    ls -l /dev/ttyUSB0 laat per seriële poort benodigde instellingen zien, waaronder de group.
    sudo usermod -a -G dialout richard voeg de gebruiker toe die de seriële poort altijd mag gebruiken.
    Vergeet niet dat je moet rebooten voordat een wijziging in groepen daadwerkelijk plaatsvind. Je kunt het daarna bekijken met groups.

  • Ubuntu installatie
    1. Ubuntu flavours
      • Desktop
      • De standaard cliënt Ubuntu installatie.
      • Studio
      • Ubuntu Studio (homepage) is te afwijkend in zijn algemene systeem sturing. Er bestaan ook nauwelijks tutorials voor. Lijkt ook veel minder compleet voor dat werk. Gaf ook geen verrassende resultaten op het gebied van muziek of video maken. Kan er zelfs geen bootable USB stick mee maken. Het zou bijzonder snel moeten zijn ivm midi, maar ook Desktop Ubuntu is al ruim snel genoeg op een beetje aardige hardware om goed met muziek om te gaan. Omdat deze laptop ook wordt gebruikt voor mobiel muziek componeren is Ubuntu Studio geïnstalleerd.
    2. Ubuntu installatie
    3. Alle flavours worden op dezelfde manier geïnstalleerd.
      • Het installatieprogramma moet in ons geval op een USB stick worden gezet van minimaal 4Gb (Windows tutorial of Ubuntu tutorial). Om van een USB geheugen stick te kunnen booten moet tijdens het opstarten van een laptop meestal op F12 worden gedrukt.Kies in dat menu voor UEFI en je krijgt het installatiemenu. Vervolgens kan in het bios worden gekozen uit de locatie van booten.
      • Zorg dat u een up-to-date bios heeft. Upgraden is makkelijker in deze fase dan in een latere fase.
      • . Ubuntu (wiki, homepage) heeft een eigen tutorial voor de installatie.
      • Aandachtspunten tijdens de installatie:
        • Voor een server kies ik voor een LTS versie om te installeren van de Ubuntu website, maar voor een cliënt kies ik meestal voor de meest recente versie.
        • Als bestandssysteem wordt ext4 genomen door de installer.
        • Apache open office wordt automatisch meegeïnstalleerd.
      • Na de installatie volgt er een uitgebreide update.
      • Voor de geïnstalleerde release van Ubuntu kijk met: lsb_release -a

  • Hoe werkt apt?
  • Advanced Package Tool oftewel APT (wiki) is een heel handige tool van Debian als je pakketten wilt installeren of onderhouden wat niet via het software menu kan. Ubuntu uitleg, Debian uitleg.

  • Dual booting
  • Dual booten met Windows 10 is geen enkel probleem. Dit kan vooral handig zijn als een computer voor meerdere taken moet worden gebruikt, zoals bijvoorbeeld Karma. Installeer altijd eerst Windows en dan pas Linux. Dual booten wordt geregeld door het instellen van partities, oftewel het verdelen van uw harde schijf. Dit gebeurt tijdens de installatie. Grub zal standaard Linux opstarten, maar voor mijn muzikanten laptop is het handiger om standaard naar Windows10 te booten:
    1. Wijzigen boot parameters
    2. Open een terminal en doe daar:
      sudo gedit /etc/default/grub
      Wijzig GRUB DEFAULT=0 in GRUB DEFAULT=4. Vervolgens opslaan en activeren met:
      sudo update-grub

  • LAPP
  • LAPP (wiki) is een welbekend acroniem voor een combinatie van een set programma’s die onder Linux veel wordt gebruikt en volledig met elkaar zijn geïntegreerd. Het acroniem staat voor:

    Linux (wiki), wij gebruiken Ubuntu. Wordt verder op deze pagina behandeld.
    Apache2 (wiki) is onze webserver. Zie verder op eigen pagina.
    PostgreSQL (wiki) is onze database. Zie verder op eigen pagina.
    Php (wiki) is een server-side script taal voor webpagina`s. Zie verder op eigen pagina.
    Secure server (wiki) is een server-side beveiligings protocol Zie verder op eigen pagina.

    Met deze set programma’s heeft u een basisinrichting voor een Linux server of cliënt. Wij voegen er nog diverse programma`s aan toe:

    Python3 (wiki), een programmeertaal. Zie verder op eigen pagina.
    PgAdmin4, database beheer server. Zie verder op eigen pagina.
    Ftp, File transfer server. Zie verder op eigen pagina.
    Email server. Zie verder op eigen pagina.
    Gebruikersprogramma`s, zoals GIMP. Zie verder op eigen pagina.
    Internet veiligheid. Zie verder op eigen pagina.

    Al met al is ons acroniem dus meer UAPPPPFEGI dan LAMP. Volg de links onder aan de pagina om een complete set-up uit te voeren.

  • Firewall UFW
  • Ubuntu installeert als firewall ufw (toelichting). Ufw wordt wel automatisch meegeïnstalleerd, maar het is standaard disabled. Er bestaat een gui (Gufw) die simpel uit het software centrum kan worden geïnstalleerd.
    ufw version
    sudo ufw app list
    sudo ufw status
    sudo ufw enable
    sudo ufw disable
    sudo ufw allow OpenSSH

Vorige: Robot pc Home Volgende: Apache2

$val ){ $$key = stripslashes( $val ); } $jaar = substr($changeddate,0,4); $maand = substr($changeddate,5,2); $dag = substr($changeddate,8,2); $lastupdate = ("$jaar $maand $dag"); $prtsrttxt = get_txt($con1, 26, 1, $idsrtodd); $jaar = substr($createddate,0,4); $maand = substr($createddate,5,2); $dag = substr($createddate,8,2); $create_stamp = ("$dag $maand $jaar"); //GENERAL INFO FOR EVERY USER ************************************************** echo ("

"); echo (""); if ($codetext) { //Code like KY-026 or NA-41 echo (""); } //End of if ($codetext) $tmp = get_txt($con1, 9, $koekje[2], 3741); //Fieldname at screen if ($prijseurinclbtw > 0){ //Show price indication $prijs_formatted = number_format($prijseurinclbtw / 100, 2, ',', '.'); echo (""); echo (""); } //End of if ($prijseurinclbtw > 0) if ($sketchtext) { //Link to OWN SOFTWARE $tmp = get_txt($con1, 9, $koekje[2], 3738); //Fieldname at screen echo (""); } //End of if ($sketchtext) $tmp = get_txt($con1, 9, $koekje[2], 3744); //Fieldname at screen if ($pinouttext) { //Pinout echo (""); } $tmp = get_txt($con1, 9, 1, 3735); //Fieldname at screen $tmp2 = get_txt($con1, 26, 1, $row4[16]); //Group name in its language echo (""); if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates $tmp = get_txt($con1, 9, $koekje[2], 3918); //Fieldname at screen LANGUAGE if ($row4[26] == 1) {$imgname = "nederland.png";} if ($row4[26] == 2) {$imgname = "deutschland.png";} if ($row4[26] == 3) {$imgname = "uk.png";} if ($row4[26] == 4) {$imgname = "france.png";} echo (""); $tmp = get_txt($con1, 9, $row4[27], 3919); //Fieldname at screen $statuskey = get_status_key($con1, $status); $tmp2 = get_txt($con1, 61, $koekje[2], $statuskey); //Fieldname at screen echo (""); } $tmp = get_txt($con1, 9, 1, 3966); //Fieldname at screen echo (""); echo ("
"); //Header $tmp = get_txt($con1, 9, $koekje[2], 3923); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //If desired }else{ echo ("$tmp"); } //Else just show if no need to translate if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates echo (" (edit)"); } echo ("Algemene informatie test
"); $tmp = get_txt($con1, 9, $koekje[2], 3739); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //Class for colour }else{ //So you are not allowed to translate echo $tmp; //Show screenname of this field in user language } //End of If you want to translate this fieldname at screen echo (" "); if ($codelink) { echo ("$codetext"); }else{ echo ("$codetext"); } //End of if ($pinoutlink) echo ("
$tmp  "); if ($urlprijs){ echo ("€  $prijs_formatted"); }else{ echo ("€  $prijs_formatted"); } //End of if ($urlprijs > "") echo ("
$tmp  "); if ($sketchlink) { echo ("$sketchtext"); }else{ echo ("$sketchtext"); } //End of if ($sketchlink) echo ("
$tmp  "); if ($pinoutlink) { echo ("$pinouttext"); }else{ echo ("$pinouttext"); } //End of if ($pinoutlink) echo ("
$tmp  "); //MENU GROUP echo (""); echo ("$tmp2
$tmp"); echo ("flag.gif"); echo ("
$tmp  "); //STATUS echo ("$status $tmp2
$tmp  "); //LAST CHANGED $tmp = substr($changeddate, 0, 10); echo ("$tmp

"); return; //////////////////////////////////////////////////////////////////////////////// function get_status_key($con, $num){ $qry = ("SELECT id FROM status WHERE nr = $num ;"); $result = pg_query($con, $qry); $row = pg_fetch_array($result); return ("$row[0]"); } 0 AND software.rstid = 2 AND tblsystext.lanid = $koekje[2] AND tblsystext.txlid = 19 ORDER BY sftname ASC , controller ASC ;"); $result = pg_query($con1, $qry2); if (pg_num_rows($result)>0) { //Only if at least 1 program exists echo ('

'); echo (""); while($col = pg_fetch_array($result)){ $col[0] = ("$col[0]"); echo (""); echo (""); echo (""); if ($koekje[0] > 0 and $koekje[3]>0){ //User is logged in and translates echo (""); } echo (''); } echo ('
"); //Header $tmp = get_txt($con1, 9, $koekje[2], 3922); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //If desired }else{ echo ("$tmp"); } //Else just show if no need to translate echo ("
$col[2]  $col[0]"); echo ("(Edit)
'); } ?> 0){ if ($header == 0) { echo ("

"); echo (""); $header++; } //End of if ($header == 0) echo (""); echo (""); } } if ($header > 0){ echo ("
"); //Header $tmp = get_txt($con1, 9, $koekje[2], 3879); //Fieldname at screen if ($koekje[3]=="1") { //If this user wants to translate then echo ("$tmp"); //If desired }else{ echo ("$tmp"); } //Else just show if no need to translate echo ("
$colbpp[2]"); //Show software van deze bot $qry=("SELECT software_basedir FROM farmbotversie WHERE id = $colbpp[0];"); $result = pg_query($con1, $qry); $col = pg_fetch_array ($result ,0); $dir1 = "/var/www/html/robotigs/software/$col[0]"; $arr1 = glob($dir1, GLOB_ONLYDIR); if (isset($arr1[0])){ $folder = $arr1[0]; $countertmp = 0; echo ("
    "); foreach (scandir($folder, 1) as $filename) { if ($filename<>"." AND $filename <>".."){ if ($countertmp == 0){ $countertmp++; } //End of if ($countertmp == 0) $tmp = "/"; $dir = substr($folder, 14) ."/"; $link = $tmp .$dir .$filename; $showname = substr($filename, 0 ,-4); echo ("
  • "); echo "$showname"; echo ("
  • "); } //End of if ($filename<>"." AND $filename <>".."){ } //End of foreach (scandir($folder, 1) as $filename) echo ("
      "); } //End of if (isset($arr1[0])) echo ("
"); } ?>
Warning: include(/var/www/html/robotigs/includes/wishlistperpart.php): Failed to open stream: No such file or directory in /var/www/html/robotigs/includes/parts_header.php on line 128

Warning: include(): Failed opening '/var/www/html/robotigs/includes/wishlistperpart.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/robotigs/includes/parts_header.php on line 128