Näytä kirjoitukset

Tässä osiossa voit tarkastella kaikkia tämän jäsenen viestejä. Huomaa, että näet viestit vain niiltä alueilta, joihin sinulla on pääsy.


Aiheet - Mistofelees

Sivuja: [1] 2 3 ... 9
1
-" Jos haluat toimivan ja juuri päivitetyn serverin, sinulla pitää olla kaksi konetta".
Pakko ilmeisesti uskoa ja hankkia toinen serveri pääserverin rinnalle.

Suoritin tänään distro-upgraden serveriin.
Tulos oli jokseenkin odotettu.
Systeemi nousee pystyyn. Kaikki tähän asti testaamani toimii (ainakin pääsin kirjautumaan)

MUTTA:
Kaikki php:tä sisältävät webbisivut ovat rikki :(

Ei ole ensimmäinen kerta. PHP on ollut varsinainen riesa näiden päivitysten kanssa. Esimerkiksi 'split'-komennon korvaaminen 'explodella' aiheutti minulle parin viikon ylimääräiset työt firman servereiden päivityksessä.
Järkevä ylläpitäjä olisi linkittänyt splitin explodeen php:n ytimessä, jolloin asiakkaille ei olisi aiheutunut niin paljoa kiroamista.
Sain tämän korjattua tekemällä scriptin, mutta työtä oli silti paljon, koska servereitä oli lauma.

Ilmeisesti vika ei tälää kertaa ole PHP:ssä, vaan Apache2:ssa.
Etsimiseen menee taas hel*ti aikaa.

2
Yleistä keskustelua / Arduino IDE 2.0 ?
« : 14.11.22 - klo:19.15 »
Miten tuon Arduinon uuden IDE:n saa asennettua Linuxiin ?
Arduinon omilla sivuilla oleva ohje on pahasti vajaa.
Latasin heidän ZIP-pakettinsa ja levitin sen omaan hakemistoonsa.
Sieltä löytyy ohjelma 'arduino-ide', joka kyllä lähtee pyörimään, mutta ainakaan kahden tunnin odottelulla ei ole tapahtunut mitään muuta kuin että mustalla ruudulla supistelee Arduinon pöllönkuva.
Meinasin mennä kysymään Arduinon forumilta, jolla olen ennenkin asioinut, mutta nyt siellä vaaditaan kaksisuuntaista mielialahäiriötä, jota varten pitäisi ladata jotain lisäohjelmia kännykkään. Pitäköön tunkkinsa.

3
Onkohan kenelläkään valmiina dokumentoitua ohjelmanpätkää, joka laskisi CRC-16 X-25 tarkistussumman?
(mieluiten C tai php, mutta muukin käy)

Olen nyt haaskannut muutamia tunteja katsellen netistä tälläistä, mutta kaikki ovat huonosti dokumentoituja. Ei mitään selitystä siitä, missä muodossa data pitäisi tajoilla ja missä muodossa se tulee ulos.
Dokumentoinnissa on myös unohdettu kertoa, onko CRC-16 CCIT:lle, Kermitille, X-25:lle ...

Netissä olleet selitykset itse laskenta-algoritmista ovat olleet kovasti risti-riitaisia. 

4
Laite (GT06 GPS tracker) lähettää binääristä dataa 30 sek välein n. 40 tavua kerrallaan.
Tämä data pitäisi saada kaapattua talteen ja muokattua seuraavan ohjelman käyttöön.
Saan datan tiedostoon loitsulla
Koodia: [Valitse]
[b]nc -kl 9998 |od -An -tu1 > /tmp/tracker.tmp[/b]
Nyt pitäisi vielä saada tuolle kaapatulle datalle tehtyä pari muokkausta ennenkuin seuraava ryöppy tulee.
- Ilmeisesti komentoriville ei pysty pipe:n perään lisäämään erillistä komentoa ? Ainakaan itse en onnistunut.
- Tein putken päähän bash scriptin, jossa on pari riviä. Tulkki ei kuitenkaan suostu suorittamaan, kuin ensimmäisen näistä riveistä
Koodia: [Valitse]
[b] #!/bin/bash
od -An -tu1 $1
echo "Hello"[/b]

Tuokin on outoa, että vaikka ohjaan datan tulostumaan tiedostoon '>', kirjoitus ei ala puhtaalta pöydältä, vaan ikäänkuin olisin käyttänyt '>>'.

Onko ajatuksia ?

5
Onko niin, että Linuxin omilla työkaluilla ei pysty käsittelemään I2C-piiriä, jossa on enemmän sisäisiä osoitteita, kuin 256 ?
Itse haluaisin käyttää EEPROM:a Raspberryssä.

Olen nyt pari viikkoa vääntänyt tämän kanssa ja viimein löytyi smbus:n dokumentti, jossa sanotaan, että osoite on 8-bittinen:
https://www.kernel.org/doc/Documentation/i2c/smbus-protocol
-" Comm  (8 bits): Command byte, a data byte which often selects a register on the device.
Data  (8 bits): A plain data byte. Sometimes, I write DataLow, DataHigh for 16 bit data.
Count (8 bits): A data byte containing the length of a block operation."

i2c-dev.h headerissa osoitteet on määritelty '__u8', mikä ilmeisesti tarkoittaa 8-bittistä osoitetta.

Kirjoittamalla osoitteen High-8 Comm-byteen ja Low-8 Datan ensimmäiseksi tavuksi sain jotain aikaan, mutta kokeilut ovat kesken ja toimivuus huono.

Olenkin ihmetellyt, miksi kaikki netissä olevat esimerkit ovat vain 256 tavulle, samaten kaikki kehutut apuohjelmat, joilla pitäisi hallita muistipiirejä, esim I2Ctools:n I2Ctransfer ja I2Cset

6
Väänsin C:llä kaksi ohjelmaa EEPROM:n komentamiseen. Kohteena FM24C64 FRAM muisti.
Toisella kirjoitetaan merkkijono EEPROM:lle ja toisella luetaan ja tyhjennetään.
Nämä ovat osa omaa GPS-tracker-rakennelmaa, eivätkä sinänsä täysin yleiskäyttöisiä, mutta ehkä niistä saa vinkkiä johonkin muuhun kehittelyyn, vaikkeivat kovin kaunista koodia olekaan.
Nämä toimivat ainakin omassa kokoonpanossani kuten pitääkin.

Paketissa on myös ohjelma GPS:n $GPRMC-lauseen lukemiseen, sekä 4-riviselle LCD:lle tulostamiseen.

KORJAUS:
Kuvittelin jo kaiken olevan hyvin, koska kaikki testit näyttivät vihreää.
I2C:n kirjoittamisessa löytyikin ongelma. ohjelma kirjoittaa kaiken ensimmäiselle 256 tavulle ja kiertyy aina alkuun.
Kirjoitusrutiini käyttää siis vain alempaa 8 bittiä osoitteessa.:
- Mikään ja yksikään netistä löytämäni ohjeet eivät kerro, miten EEPROM:lle kirjoitetaan, jos muistin koko on suurempi, kuin 256 tavua.

WiringPi ja OrangePi ovat parhaillaan tutkinnassa.
Tätä menoa kirjoitan kohta oman low-level-paketin, jolei muuta ratkaisua löydy.

Pidätelkää hengitystä ;(

7
Olen kirjoitellut ohjelmistopakettia, joka veneessä ja matkailuautossa kerää esim paikkatietoa, esittää sen paikallisesti kulkuneuvon serverin omilla nettisivuilla ja lähettää kotiserverille. Vekottimessa on näyttölaitteena 4x20 I2C LCD.

Data lähetetään LCD:lle omatekoisella C-kielisellä ohjelmalla (  ./LCDtulosta clr "$D $T UTC"@1,1 "LAT: $lat"@2,1 "LON: $lon"@3,1 )
GPS:ää luetaan omatekoisella C-kielisellä ohjelmalla, joka printtaa $GPRMC -lauseen.

Sitten alkoivat ongelmat.
Systeemi kaatui ja kone meni jumiin epäsäännöllisesti 5min - 12h ajon jälkeen. BASH:n rajallisilla työkaluilla syyn löytäminen oli todella hankalaa.
Epäilin jo muistikortteja, prosessoria ja virtalähdettäkin.

Tämä auttoi hieman, tällä pääsi näkemään, missä kone kaatui:
trap 'echo "Vika rivillä $LINENO" >> /home/bin/i2cLCD/testi.txt' ERR
samaten pitkin scriptiä sirotellut echo "Ax">>/home/bin/i2cLCD/testi.txt -lauseet

'timeout' GPS:ää kutsuvalla rivillä auttoi selviämään GPS:n jumeista

Lopullinen ratkaisu suorastaan hävettää.
- Pistetään GPS työntämään tulostuksensa tiedostoon (tiedosto tietenkin tmpfs:llä !)
- Ajetaan C-ohjelmia taustalla ('&'), jotta niistä saadaan puristettua PID
- Pistetään scripti odottamaan GPS-ohjelman kypsymistä
- Haetaan tiedostosta rivi ja jatketaan

Kaikkine roskineenkin scriptin pyörähdykseen menee n. 2 sek, joten LCD:lle tulostuskin voidaan pistää taustalle '&'. I2C LCD:n ruudun täyttämiseen menee n. 1 sek.

Scripti ja C-ohjelmat itsessään ovat niin pitkät, etten viitsi niitä pistää tähän, mutta tässä on tarjolla mekanismi, jolla GPS:n lukeminen tuntuu onnistuvan
Koodia: [Valitse]
      timeout 3 /home/bin/i2cLCD/gps >$TMPFILE &
      pid=$!
      wait $pid
      read uline < $TMPFILE

Seuraava murhe on siinä, mitä tapahtuu, kun PID:n arvo kasvaa yli naapurin aidan. Osaako systeemi aloittaa PID-laskurin nollasta, vai tuleeko overflow ?

8

En löydä mistään tietoa C:n kielletyista komentoriviargumenteista.
'$' argumentin ensimmäisenä merkkinä ei toimi.
Jos '$' on keskellä sanaa, se ja loppusana katoavat

Onko joku temppu, jolla C:n saisi hyväksymään dollarimerkin komentorivillä ?
'$GPRMC ' on selkeämpi parametri, kuin 'GPRMC'


9
Kirjoitin Bash:lla kevyen scriptin, joka kutsuu toistuvasti C:llä kirjoitettua ohjelmaa 'GPS'
'GPS lukee sarjaportissa olevan GPS:n lähettämää tekstivirtaa, poimii siitä $GPRMC-lauseen, tulostaa sen ja poistuu.

Scripti pyörii 5 - 20 kierrosta. jonka jälkeen se jämähtää.
Vika on kirjoittamassani 'GPS'-ohjelmassa ja tarkemmin sen lukulauseessa
int n = read(fd, &line, sizeof(line));

Onko jotain tapaa, millä näkisi, mikä on vikana ? muistin ylivuotoja, tms

Olen kirjoittanut tuon GPS ainakin sata kertaa uudestaan eri rakenteilla

Scripti on vain testausta varten:
Koodia: [Valitse]
#!/bin/bash
lkm=0
while true; do
   ./gps;   lkm=$((lkm+1));   echo "lkm=$lkm"
done

10
Miten Linuxin saa siirtymään voimakkaimmalle reitittimelle ?

Tarkoitus on kasata kannettava Linux-kokoonpano, jota siirretään eri reitittimien vaikutusalueelle.
Reitittimet, niiden SSID ja salasanat ovat tiedossa, joten ne voisi kirjoittaa listaan, josta kone valitsisi parhaan.

Missä yleensäkin on kirjattuna käytetyn reitittimen tiedot ?
Jollei löydy mitään valmista, voisin keittää kasaan oman scriptin.

11
ONGELMA RATKESI SAMAN TIEN. Minulla oli kirjoitusvirhe runuser-komennossa.
Jätän tämän kuitenkin tänne varoittavaksi esimerkiksi ;)

crontab kutsuu lyhyttä scriptiä, joka ensin muokkaa hieman dataa ja paiskaa sen sitten serverille, jossa se liitetään (append) lokitiedoston loppuun.
Scripti kutsuu wiringop:n ohjelmia, jotka vaativat rootin oikeudet
Scp käyttää käyttäjätunnusta, joka on sama molemmissa koneissa.
SCP:n tunnistautumisessa käytetään public keytä.
SCP-komento toimii ilman salasanaa, jos sitä ajetaan käyttäjän oikeuksin.
Kun scriptiä ajetaan roottina, ohjelma kysyy käyttäjän salasanaa.
Scriptiä on pakko ajaa roottina, koska LCDtulosta sisältää kutsuja wiringop ohjelmiin.

Miten bash scriptin sisällä saisi tuon scp-rivin ajettua ilman salasanakyselyä ?

Tiivistelmä scriptistä:
Koodia: [Valitse]
#!/bin/bash
declare -a arr
NowC=$(date +"%H:%M")
IP=$(hostname -I)
IP=$(echo -n "${IP//[[:space:]]/}")
while true; do
   IFS="," read -r osoite line < /dev/ttyACM0
   if [[ $osoite == '$GPRMC' ]]; then
       uline=${line%?}
       set -f; IFS=','; arr=($uline)
      break
   fi
done
$(/home/bin/wiringop/i2cLCD/LCDtulosta clr $NowC@1,10 "LAT: ${arr[2]}"@2,1 $IP@4,1)
runuser -l -c "echo $uline | ssh luuseri@omaserveri 'cat - >> /home/luuseri/Sijainti/vaunu.txt' "

Tuo LCDtulosta on omatekemä C-kielinen ohjelma, joka tulostaa annetut merkkijonot LCD:lle annettuihin kohtiin. Ohjelma kutsuu wiringop -kirjastoja. Koneena on OrangePi Lite.

12
Ubuntu tietokoneissa / Onedrive, tilin vaihto?
« : 07.02.21 - klo:17.30 »
Minulla on käytössä kaksi 1TB levyaluetta M$ Onedrivessä, Käyttäjät minä@HOTMAIL.com ja minä@GMAIL.com, sekä tuore OneDrive v2.4.9-0~202012270043~ubuntu20.04.1.

Asensin ja configuroin OneDriven käyttäjälle minä@GMAIL.com. Tiedostot menevät kuitenkin synkronoinnissa minä@HOTMAIL.com levyalueelle.

Kuinka saisin vaihdettua OneDriven kohdelevyalueen / käyttäjän ?

13
Minulla on ollut Ubuntu-servereitä niin kauan, kuin niihin on saanut Apachen, joten tausta on tuttu.
Nyt päivitin kotipalvelimella Ubuntu 19.04 -> 20.04 ja sain ihan uuden ongelman.

Ulkoinen laite lähettää http POST -viestin serverissä olevalle server2.php-ohjelmalle, joka tallettaa datan valoloki.txt-tiedostoon.
Toinen PHP-vebbisivu tekee datasta phplot:lla kuvan selaimelle pyydettäess.

Kaikki toimii hetken hyvin, Sitten päivitys pysähtyy.
valoloki.txt-tiedoston omistajaksi on muuttunut roo:root ja permissioniksi 644, eikä tuo server2.php pysty kirjoittamaan tiedostoon.

Olen nyt kokeillut www-data:www-data 777 -omistajaa ja oikeuksia, mutta ne korvautuvat joka kerta, kun ohjelma on pyörähtänyt muutaman kerran.
Ohjelmissa ei ole mitään miniuun tekemääni, jmikä muuttaisi asetuksia.

MITÄ IHMETTÄ ?

14
Multimedia ja grafiikka / ? Gimp select ?
« : 26.10.20 - klo:13.15 »
Olen aloittelija GIMP:n kanssa, vaikka ollut IT-profina 40v ja käyttänyt kymmeniä muita kuvankäsittelyohjelmia..

Latasin kuvan ja tein sille flip horisontal.
Nyt en pysty valitsemaan kuvassa mitään, koska aina, kun vien kursorin kuvan päälle ja klikkaan vasemmalla, kuva kääntyy.
Kuvan ympärilla on virtaava katkoviiva, joka kai tarkoittaa, että se on valittu.

Jos suljen GIMP:n ja käynnistän uudestaan ja lataan minkä tahansa kuvan, ohjelma tekee samaa.
Miten tästä tilasta pääsee pois?

15
Kun kotona on lauma servereitä ja Arduino-peräisiä mitta- ja valvontalaitteita, alkoi harmittaa niiden kutsuminen IP-osoitteella.
Pistin Raspin DNS-serveriksi. Reititin saa olla nyt vielä DHCP-serverinä jonkin aikaa. Tosin käyttämäni Zyxelin karvalakki on jo nyt käynyt rajalliseksi.
 Kolmen päivän askartelun jälkeen homma lähti toimimaan. Linux, Win ja Arduino löytävät lelut nimellä. Applea en vielä ole päässyt kokeilemaan.

Netistä löytämäni ohjeet ovat hauskoja. Osa niistä jopa vei asiaa hieman eteenpäin.
Jos asia kiinnostaa, voin koittaa raapia kasaan jonkinlaiset dokumentit.

Hauskinta olisi tehdä Arduinosta local DNS-palvelin, johon osoitekirjan voisi tarjota SD-kortilla, mutta se on toinen tarina. Pitää ensin kaivella esille DNS-protokollasta lisää tietoa. Ainakaan Kuukkeli ei löytänyt yhtään valmista projektia.

16
Yleistä keskustelua / Ohjelmointikielistä
« : 04.04.20 - klo:11.35 »
Seuraava, joka kehittää taas uuden ohjelmointikielen voisi tehdä mukaan yhden fiitserin

Kun yhteenkuuluvat rakenteet paketoidaan sulkumerkkien sisään, voisi näihin sulkumerkkeihin lisätä myös tunnisteen. Vaikkapa vain numeron tai merkkisarjan, joka noudattaisi muuttujien nimeämiskäytäntöjä.
Fiksu IDE pystyisi ylläpitämään numerointia käsin koskematta ja ilmoittamaan virheistä lennossa.

Ohjelman kasvaessa ja sisäkkäisten rakenteiden määrän kasvaessa on vaikea enää tunnistaa, mikä loppusulku liittyy mihinkin alkusulkuun.

Ehdotukseni esimerkin muodossa:

void setup() asetukset{
       WiFi.begin()
}asetukset
for( ; ; ) 1{
    for( ; ; ) 2a{ plapla }2a
    for ( ; ; ) 3{
            plaplapla
    }3
}1

Joku jo ehdottikin, että sulut merkittäisiin väreillä. No ei kiitos näin värisokeiden puolesta. Eikä kukaan muutenkaan erota kymmeniä värejä toisistaan. Ei varsinkaan mv-laserilla paperille tulostettuna.
Joku hehkutti, että monet IDE:t korostavat loppusulun, kun vie kursorin alkusulun päälle. Ei ole tainnut ko henkilö koskaan kirjoittaa yhtä kuvaruutua pidempää ohjelmaa.
Sulkumerkkien korvaaminen sisennyksillä on suoraan p*stä. Se toimii kyllä, jos editoit koodia koko ajan samalla editorilla samassa koneessa, mutta tuo ongelmia koneelta toisella vaihtaessa.

17
Käyttäisin udp:tä esp8266-01 ja RasPin väliseen tiedonkeruuseen, koska se on varsin kevyt protokolla myös toteutettavaksi.
Vastaan tuli outo vika:
Jos lähetän esp:ltä jotain, nc jää edelleen odottamaan, eikä päätä yhteyttä.
Kokeilin tätä ristiin rastiin raspin, kotiserverien, läppärin ja  esp:n välillä ja aina sama juttu: yhteys jää roikkumaan.
Pitäisikö viestin loppuun ujuttaa joku loppumerkki. Mikä ja miten ?

Linuxilla lähetys komentoriviltä:
    echo "dataa" > /dev/udp/192.168.0.2/9999

esp:llä lähetys (arduino):
     Udp.beginPacket("192.168.0.2", localUdpPort);
    Udp.println(AllData);
    Udp.endPacket();

Linuxilla vastaanotto:
    nc -klu 9999

man:n mukaan nc:n parametri -k jättää komennon odottamaan seuraavaa pakettia. Jos sen jättää pois, ei tilanne muutu, vaan nc tulostaa omille riveilleen kaiken, mitä toiselta koneelta lähetetään, eikä systeemi koskaan palaa komentokehotteeseen:
    nc -lu 9999
Tämä pistää epäilemään, että nc ei saa kaipaamaansa loppumerkkiä.

Ajatuksia, ehdotuksia ?

18
Yleistä keskustelua / IoT, verkkolevyalue, Dweet.io ?
« : 25.12.19 - klo:14.32 »
Onko olemassa jotain vastaavaa levypalvelua, kuin dweet.io, mutta yksinkertaisempaa ?

Tarkoitus on välittää yksinkertaiselta io-laitteelta identifioimatonta dataa suljetusta verkosta nimeämättömille lukijoille.
IoT-laitteeena voisi käyttää Arduinoa tai ESP8266.
Datan viemiseen ja lukemiseen olisi helpointa käyttää http-protokollaa.
Data on valvonta- ja mittauslaitteiden tuottamia lyhyitä, alle 100 byten rivejä.
Optimaalinen olisi järjestelmä, johon voisi lisätä datarivejä ja järjestelmä leikkaisi alusta vanhimmat, mikäli tiedosto kasvaa yli asetetun rajan.
Numeerisen arvon esittämiseen phplot tai vastaava olisi mukava.

Olen tehnyt tälläisen järjestelmän eräälle serverille, joka ei kuitenkaan enää ole käytössäni ja se toimi hyvin.
dweet.io olisi muuten vastaava, mutta hidas ja leipoo datan ympärille turhaa mössöä.
Amazonin AWS taas on aivan liian massiivinen ja kallis n. 2000 B varastoksi.
Itsellä on kyllä M$ Onedriven, Dropbxin ja Gdriven alueet käytössä, mutta niihin ei saa vietyä dataa kevyillä työkaluilla, eikä niistä saa haettua dataa http-protokollalla

19
Ubuntu tietokoneissa / Apache itkee log-tiedostoista
« : 12.10.19 - klo:12.18 »
Minulle tulee sähköpostiin jatkuvasti allaolevan näköinen valitus kotiserveriltä.
Millä tuosta pääsisi eroon ?
Olen yrittänyt saada kaikki rotatet pois käytöstä logrotatesta. Muuten olen onnistunutkin, mutta tuo Apache2 vielä tekee kiusaa. Sen ohjaus poikkeaa muiden ohjelmien järjestelyistä.

Koodia: [Valitse]
/etc/cron.daily/logrotate:
error: error opening /var/log/apache2/access.log.1.gz: No such file or directory
run-parts: /etc/cron.daily/logrotate exited with return code 1

20
Onko mahdollista asettaa sudo:lle eri salasana, kuin normaalisti käyttämäni ?

Selitys:
- Jos joku vieras, mahdollisesti vihamielinen taho, pääsee kirjautumaan normaalilla käyttäjätunnuksellani, hän pääsee myös root-asemaan tietäessään salasanani.
- Olen estänyt root-tunnuksen käytön kirjautumisessa antamalla root:lle 240 merkkiä pitkän salasanan, jota en tiedä itsekään.
Mieluiten ampuisin koko rootin ja sen tilalle pistäisin itse keksityn käyttäjätunnuksen, vaikkapa 'karjalatakaisinvaikkapullokerrallaan'.

On rasittavaa, kun joku Kim tai Mao takoo kotiserveriä koko ajan. Pahimmillaan useita ssh-login yrityksiä sekunnissa. Kun fail2ban  estää yritykset yhdestä osoitteesta, pommitus alkaa seuraavasta. Yrittäjä tietää koneen olevan Linux, joten pommitetaan root-käyttäjää. (vastaavasti edellistä reititintä pommittiin admin-käyttäjänä)

Sivuja: [1] 2 3 ... 9