Talologger Muuttujat & Ohjelmointi

  • Viestiketjun aloittaja Viestiketjun aloittaja Ismo67
  • Aloituspäivämäärä Aloituspäivämäärä
Vs: Talologger Muuttujat & Ohjelmointi

jolla sanoi:
jossa tuo viimeinen pilkku on liikaa testi ohjelmien mukaan
mitenhän pitäis .conf tiedostoa muutta jotta pilkku jäisi pois
onkohan tuosta edes haittaa?

Varsinaista tukea ei tuon pilkun poistolle ole, mutta olet keksinyt ihan oivan tavan tehdä tuosta oikeellisen. Eli lisännyt perään vielä yhden kentän, jossa on ihan järkevä arvokin.

Jos tukea tekisi, niin tulisi varmaan uusi käsite, joka on datapiste-erotin (DELIMITER), joka tulee DATAVALUE-osioiden väliin.

Pistän toivelistalle.
 
Vs: Talologger Muuttujat & Ohjelmointi

kuinka taloLogger'illa voi lukea normi mittausvälin ollessa 10min yhden anturin (OWFS) tiheämmin, esim 30sekunnin välein?

pitääkö asentaa kaksi taloLogger'ia vai miten? vai onko yleensäkään mahdollista? jostain jäi mieleen että olisi mahdollista
 
Vs: Talologger Muuttujat & Ohjelmointi

jolla sanoi:
kuinka taloLogger'illa voi lukea normi mittausvälin ollessa 10min yhden anturin (OWFS) tiheämmin, esim 30sekunnin välein?

pitääkö asentaa kaksi taloLogger'ia vai miten? vai onko yleensäkään mahdollista? jostain jäi mieleen että olisi mahdollista

Kahdella taloLoggerilla.
 
Vs: Talologger Muuttujat & Ohjelmointi

Mulla on taloLoggerin (v1.6a) kannassa kaasupolttimen tilatieto joka tulee pumpulta. Haluaisin saada taloLoggerGraphiin kuvan kumulatiivisesta kaasun käytöstä eli aina kun on päällä, käyrä nousee tasaiseen tahtiin ja kun pois niin käyrä menee vaaterissa. Kaasun kulutus on n. 34 l /min -> 0.00056 m3/s

Miten saisin tuon tehtyä? Ihan suoraan tuota tilatietoa ei voine käyttää koska se ei ole "counter". Kokeilin niin että yritin tehdä "virtual" mittauksen, joka lisäisi aina uuden kulutusarvon edelliseen tyyliin:

@VIRTUAL=gasCons:1:%/_gasCons_/% + (%_burnerState_% * 0.00056 * (%_%TIME%_% - %/_%TIME%_/%)

Tästä tulee virheilmoitus että ei pysty resolvata tuota %/_gasCons_/%. Onko niin että että virtuaalimittauksia ei voi käyttää laskennan muuttujina?

Ehdotuksia miten muuten tuo onnistuisi?

Edit: Lisätty taloLogger versio
 
Vs: Talologger Muuttujat & Ohjelmointi

meneekö tuo 'gasCons' tietokantaan?
tuli vain mieleen kun itsellä on mittauksia mitkä ei mene tietokantaan, ne ei näy taloLoggerGraph'issa
 
Vs: Talologger Muuttujat & Ohjelmointi

jolla sanoi:
meneekö tuo 'gasCons' tietokantaan?
tuli vain mieleen kun itsellä on mittauksia mitkä ei mene tietokantaan, ne ei näy taloLoggerGraph'issa

Menee kantaan mutta arvo on NULL koska ei pysty laskemaan sille arvoa em virheen takia.
 
Vs: Talologger Muuttujat & Ohjelmointi

hakisin python scriptillä taloLoggerin SHELL'illä tietokannasta sen 1 tai 0 erilliseen tiedostoon minkä ei samalla shell'illä (numerolla) seuraavalla rivillä tekisin toisen nimisen ja sen jälkeen tekisin vielä kolmannen eli virtuaalin missä sitten voi tehdä laskutoimitukset elikkä laskee yhteen jolloin ne kumuloituu ja sen kertoimen myös, hitto kun olen huono selittämään

EDIT: pieni virhe lipsahti, ei sana puuttui
 
Vs: Talologger Muuttujat & Ohjelmointi

pieni virhe oli mutta saitko 'Unelmavävy' kumuloituvan käyrän toimimaan?

"@VIRTUAL=gasCons:1:%/_gasCons_/% + (%_burnerState_% * 0.00056 * (%_%TIME%_% - %/_%TIME%_/%)"

käsittääkseni vituaalimittausta ei voi tehdä (nimetä)aikaisemmin käytetyllä nimellä (gasCons) sulkujen määräkin?

onko tuo gasCons sarake tyyliin 1 tai 0 vai jotain muuta, voisin testata
 
Vs: Talologger Muuttujat & Ohjelmointi

jolla sanoi:
pieni virhe oli mutta saitko 'Unelmavävy' kumuloituvan käyrän toimimaan?

"@VIRTUAL=gasCons:1:%/_gasCons_/% + (%_burnerState_% * 0.00056 * (%_%TIME%_% - %/_%TIME%_/%)"

käsittääkseni vituaalimittausta ei voi tehdä (nimetä)aikaisemmin käytetyllä nimellä (gasCons) sulkujen määräkin?

onko tuo gasCons sarake tyyliin 1 tai 0 vai jotain muuta, voisin testata

En ole saanu toimimaan mut en kyl oo tutkinutkaan sen enempää. Tuon yritelmäni idea oli siis että haettua kumulatiivisen kulutuksen (gasCons) edellinen arvo, lisätä siihen hetkellinen kulutus jos poltin päällä (burnerState) ja tallettaa tulos.
 
Vs: Talologger Muuttujat & Ohjelmointi

Unelmavävy sanoi:
En ole saanu toimimaan mut en kyl oo tutkinutkaan sen enempää. Tuon yritelmäni idea oli siis että haettua kumulatiivisen kulutuksen (gasCons) edellinen arvo, lisätä siihen hetkellinen kulutus jos poltin päällä (burnerState) ja tallettaa tulos.

onko State se on/off arvo 1, 0 vai jokin muu luku
 
Vs: Talologger Muuttujat & Ohjelmointi

jolla sanoi:
onko State se on/off arvo 1, 0 vai jokin muu luku

Se on on oikeasti 10 tai 11 eli pitää vähentää 10, jotta saa aikaa saman efektin kun esimerkkikoodissa. Josta muuten puuttuu yksi sulku näköjään. Postasin sen noin selkeyden vuoksi ja koska siinä koodin pätkässä ei ole ongelmaa eli

(%_burnerState_% * 0.00056 * (%_%TIME%_% - %/_%TIME%_/%))

ei ole ongelmaa, muuttujille tulee arvot. Ongelma on samannimisen virtuaalimittauksen edellisen arvon käyttö ja tallentamisen yritys.
 
Vs: Talologger Muuttujat & Ohjelmointi

Unelmavävy sanoi:
Se on on oikeasti 10 tai 11 eli pitää vähentää 10, jotta saa aikaa saman efektin kun esimerkkikoodissa. Josta muuten puuttuu yksi sulku näköjään. Postasin sen noin selkeyden vuoksi ja koska siinä koodin pätkässä ei ole ongelmaa eli

(%_burnerState_% * 0.00056 * (%_%TIME%_% - %/_%TIME%_/%))

ei ole ongelmaa, muuttujille tulee arvot. Ongelma on samannimisen virtuaalimittauksen edellisen arvon käyttö ja tallentamisen yritys.

se vaatii 3 saraketta, ensiimmäinen, mikä sinulla jo on burnerState (10 tai 11)
toinen, millä noudat scriptillä tietokannasta burnerState_2 lukeman tiedostoon state.csv
SHELL1:LOCATION = /usr/bin/python
SHELL1:PARAMETERS = /home/talo/State.py

state.csv tiedon luet vaikkapa OWFS'llä tai taloLoggerin SHELL'illä
@OWFS:OWFS = burnerState_3:1:/home/talo/log/state.csv

tietokantaan @VIRTUAL=burnerState_2:1:(%_burnerState_% + %_burnerState_3_%)

olen testannut tuon raspilla burnerState ollessa 1 tai 0 ja se toimii , burnerState_2 kumuloituu

nuo kertoimet voi sitten laittaa vaikkapa vasta käyrää piirrettäessä, testasin vain tilatiedolla

korkeammalta taholta saisi ehkä yksinkertaisemmat ohjeet ja oikeellisemmat, saattaa olla yhden rivin rimpsu millä tuo hoituu

sitä myös mietin että missä vaiheessa tuo SHELL'illä ajamani scrpti hakee tietokannasta tiedon kun käsittääkseni taloLoggeri lukitsee tietokannan, ennen lukitusta vai jälkeen. se vaan tekee sen, toimii

taloLoggeriin voisi tuon ominaisuuden koodata valmiiksi niin ei tarvitsisi kikkailla, tai enhän tiedä jos vaikka onkin mutten osaa
 
Vs: Talologger Muuttujat & Ohjelmointi

Unelmavävy sanoi:
Se on on oikeasti 10 tai 11 eli pitää vähentää 10, jotta saa aikaa saman efektin kun esimerkkikoodissa. Josta muuten puuttuu yksi sulku näköjään. Postasin sen noin selkeyden vuoksi ja koska siinä koodin pätkässä ei ole ongelmaa eli

(%_burnerState_% * 0.00056 * (%_%TIME%_% - %/_%TIME%_/%))

ei ole ongelmaa, muuttujille tulee arvot. Ongelma on samannimisen virtuaalimittauksen edellisen arvon käyttö ja tallentamisen yritys.

tarkoititko jotain tällaista http://personal.inet.fi/cool/jolla/kul.htm
tuo on taloLoggerilla mittailtu sähkön ja puun kulutus ja näkyy se taloLoggerGraph'illakin samoin, tuota käppyrää voisi siistiä mutta toisaalta näkyyhän siinä eilisen päätös
minulle on hapokasta tuo paikalliaika javascriptillä kun kannassa ne on gmt
 
Vs: Talologger Muuttujat & Ohjelmointi

Törmättiin toisen Siemens SmartWeb käyttäjän setupissa ongelmaan, jossa taloLoggerin mukana tuleva smartweb-moduli ei toiminutkaan. Tämä saattaa tulla muillekin eteen, joten tiedon jakaminen lienee paikallaan.

Itse käytän SmartWeb v4.06, joka toimii taloLoggerin kanssa sellaisenaan. Uudemmissa SmartWeb versioissa (v5 ja v6 ilmeisesti) on toiminnallisuutta muutettu siten, että autentikoinnin jälkeen generoidaan uusi SessionID jota käytetään datapointien lukemiseen. Vanhassa SmartWeb versiossa käytetään samaa SessionID:ta ennen ja jälkeen autentikoinnin. Nykyinen taloLogger tallettaa SessionID:n ennen autentikointia, joten datapointtien luku ei enää onnistu vaikka käyttäjätunnus ja salasana olisikin oikein.

Ratkaisu oli lisätä smartWeb.py koodiin SessionID:n talletus uudelleen autentikoinnin jälkeen. Koodin pitäisi toimia myös vanhempien SmartWebien kanssa. Modatun modulin saa minulta pyydettäessä.
 
Vs: Talologger Muuttujat & Ohjelmointi

Unelmavävy sanoi:
Törmättiin toisen Siemens SmartWeb käyttäjän setupissa ongelmaan, jossa taloLoggerin mukana tuleva smartweb-moduli ei toiminutkaan. Tämä saattaa tulla muillekin eteen, joten tiedon jakaminen lienee paikallaan.

Itse käytän SmartWeb v4.06, joka toimii taloLoggerin kanssa sellaisenaan. Uudemmissa SmartWeb versioissa (v5 ja v6 ilmeisesti) on toiminnallisuutta muutettu siten, että autentikoinnin jälkeen generoidaan uusi SessionID jota käytetään datapointien lukemiseen. Vanhassa SmartWeb versiossa käytetään samaa SessionID:ta ennen ja jälkeen autentikoinnin. Nykyinen taloLogger tallettaa SessionID:n ennen autentikointia, joten datapointtien luku ei enää onnistu vaikka käyttäjätunnus ja salasana olisikin oikein.

Ratkaisu oli lisätä smartWeb.py koodiin SessionID:n talletus uudelleen autentikoinnin jälkeen. Koodin pitäisi toimia myös vanhempien SmartWebien kanssa. Modatun modulin saa minulta pyydettäessä.

Saisinko tuon muokatun moduulin? Tarkkaan ottaen muunneltujen taloLogger-moduulien jakelu muuten kuin ehdottamalla muutoksia varsinaiseen tuotteeseen ei ole lisenssin mukaista (vaikka Python-koodi onkin näkyvissä, niin taloLogger ei ole OpenSource-lisenssin alainen). Asiasi on toki hyvä, mutta jos tuotteessa on vikaa, niin mielelläni korjaisin sen siten, että kaikki saavat toimivaa tavaraa suoraan tuotteen alkulähteeltä.
 
Vs: Talologger Muuttujat & Ohjelmointi

olammi sanoi:
Saisinko tuon muokatun moduulin? Tarkkaan ottaen muunneltujen taloLogger-moduulien jakelu muuten kuin ehdottamalla muutoksia varsinaiseen tuotteeseen ei ole lisenssin mukaista (vaikka Python-koodi onkin näkyvissä, niin taloLogger ei ole OpenSource-lisenssin alainen). Asiasi on toki hyvä, mutta jos tuotteessa on vikaa, niin mielelläni korjaisin sen siten, että kaikki saavat toimivaa tavaraa suoraan tuotteen alkulähteeltä.

Juu toki saat. Siinä on mukana myös aiemmin lisäämäni merkkijonopohjaisen tilatiedon talletus lukuina yksinkertaisella lookup-taulukolla. Soveltuuko se sellaisenaan yleiseen jakoon jää sinun arvioitavaksi.
 
Vs: Talologger Muuttujat & Ohjelmointi

Olen hankkinut SmartWeb:in oman Waterstagen rinnalle ja taloLoggerin hyödyntäminen seurannassa kiinnostaisi. SmartWeb:in autentikointi ei tosiaan toimi sen ja taloLogger:in kanssa (taloLoggerPi v1.1e), olisin kiinnostunut tuosta Unelmavävyn päivitetystä modulista tai mieluiten tietty taloLoggerin versiosta jossa tuon SmartWeb:in uudemmat versiotkin toimisivat.
 
Vs: Talologger Muuttujat & Ohjelmointi

jostain syystä if False: ja else: välillä oleva koodi ei toimi, antaa seuraavaa

Koodi:
root@rock:/home/rock# python mbus.py
Traceback (most recent call last):
  File "mbus.py", line 31, in <module>
    mbusdata = minidom.parse('mbus.xml')
  File "/usr/lib/python2.7/xml/dom/minidom.py", line 1920, in parse
    return expatbuilder.parse(file)
  File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 922, in parse
    fp = open(file, 'rb')
IOError: [Errno 2] No such file or directory: 'mbus.xml'

käsittääkseni sen pitäisi hakea m-bus väylästä data jatkojalostukseen
kun korvaan em rivit .sh scriptillä
Koodi:
usr/local/bin/mbus-serial-request-data -b 2400 /dev/ttyUSB0 193 > mbus.xml
, niin sitten toimii

Koodi:
#!/usr/bin/python

from xml.dom import minidom
from pdb import set_trace as bkp
import subprocess

# Retrieve the XML data
if False:
    # Real
    cmd = ['mbus-serial-request-data', '/dev/ttyUSB0', '<193>']
    # cmd = ['cat', 'mbus.xml']
    reqdata = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    mbus_xml, err = reqdata.communicate()
    mbusdata = minidom.parseString(mbus_xml)
else:
    # Test
    mbusdata = minidom.parse('mbus.xml')

# Parse the XML data
record2val = dict()

recordlist = mbusdata.getElementsByTagName('DataRecord')
for record in recordlist:
    id_num = int(record.attributes['id'].value)
    value_elm = record.getElementsByTagName('Value')[0]
    value = value_elm.firstChild.nodeValue
    record2val[id_num] = value

for id_num in (1, 2, 11, 12):
    print record2val[id_num]

tuolla juttua aiheesta enempi ja ymmärrettävämmin https://www.domotiga.nl/boards/1/topics/4355
 
Vs: Talologger Muuttujat & Ohjelmointi

Kai korvasit rivin:

if False:

rivillä:

if True:

muuten ei taida mennä oikeaan haaraan? Ja cmd puuttuu '-b 2400' parametri, pitäisikö se lisätä myös, että vastaa tuota manuaalisesti ajamaasi komentoa?
 
Vs: Talologger Muuttujat & Ohjelmointi

apophis sanoi:
Kai korvasit rivin:

if False:

rivillä:

if True:

muuten ei taida mennä oikeaan haaraan? Ja cmd puuttuu '-b 2400' parametri, pitäisikö se lisätä myös, että vastaa tuota manuaalisesti ajamaasi komentoa?

muuttui herja hieman
Koodi:
root@rock:/home/rock# python mbus1.py
Traceback (most recent call last):
  File "mbus1.py", line 14, in <module>
    mbusdata = minidom.parseString(mbus_xml)
  File "/usr/lib/python2.7/xml/dom/minidom.py", line 1930, in parseString
    return expatbuilder.parseString(string)
  File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 940, in parseString
    return builder.parseString(string)
  File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 223, in parseString
    parser.Parse(string, True)
xml.parsers.expat.ExpatError: no element found: line 1, column 0

tavoitteena olis ettei kirjoittaisi tiedostoa joka kerta kun näissä on yleensä kortti tai nand

nyt sain toimimaan ilman että kirjoittaa levylle, seuraavalla

Koodi:
..............................
if True:
    session = subprocess.Popen(['./402.sh'], stdout=PIPE, stderr=PIPE, shell=True)
    stdout, stderr = session.communicate()
    mbusdata = minidom.parseString(stdout)
.......................

402.sh
Koodi:
mbus-serial-request-data -b 2400 /dev/ttyUSB0 193
 
Vs: Talologger Muuttujat & Ohjelmointi

Jos levylle kirjoituksia haluaa välttää, niin normaalisti /var/volatile tai esim. raspberryssä /dev/shm on ramdiskillä olevia hakemistoja, jonne voi huoletta kirjoitella ajon aikaisesti.

mount komennolla näet, miten mikäkin paikka on systeemissä, onko flässiä vai rammilla.

Jotain debuggia voisi lisätä, jos haluat alkuperäisen koodin toimimaan... Esimerkiksi ennen riviä:

mbusdata = minidom.parseString(mbus_xml)

laita

print mbus_xml

että onko siinä haluttu tavara... ja riville

cmd = ['mbus-serial-request-data', '/dev/ttyUSB0', '<193>']

voisi lisätä sen '-b 2400' parametrin. Miksihän tuo 193 on väkäsissä, pitäisikö olla ilman??

cmd = ['mbus-serial-request-data', '-b', '2400', '/dev/ttyUSB0', '193']
 
Vs: Talologger Muuttujat & Ohjelmointi

apophis sanoi:
Jos levylle kirjoituksia haluaa välttää, niin normaalisti /var/volatile tai esim. raspberryssä /dev/shm on ramdiskillä olevia hakemistoja, jonne voi huoletta kirjoitella ajon aikaisesti.

mount komennolla näet, miten mikäkin paikka on systeemissä, onko flässiä vai rammilla.

Jotain debuggia voisi lisätä, jos haluat alkuperäisen koodin toimimaan... Esimerkiksi ennen riviä:

mbusdata = minidom.parseString(mbus_xml)

laita

print mbus_xml

että onko siinä haluttu tavara... ja riville

cmd = ['mbus-serial-request-data', '/dev/ttyUSB0', '<193>']

voisi lisätä sen '-b 2400' parametrin. Miksihän tuo 193 on väkäsissä, pitäisikö olla ilman??

cmd = ['mbus-serial-request-data', '-b', '2400', '/dev/ttyUSB0', '193']

nyt lähti tuhannen kokeilun jälkeen

Koodi:
...............
if True:
    reqdata = subprocess.Popen((['/usr/local/bin/mbus-serial-request-data -b 2400 /dev/ttyUSB0 193']), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
    mbus_xml, stderr = reqdata.communicate()
    print mbus_xml
    mbusdata = minidom.parseString(mbus_xml)
......................

avain ongelmat olivat se alkuperäisen 'False' pitää olla 'True' ja sitten 'shell=True', mitä se lienee merkitseekin mutta 2.7 ilmeisesti vaatii

kiitos vinkeistä
 
Vs: Talologger Muuttujat & Ohjelmointi

jolla sanoi:
Traceback (most recent call last):
File "mbus_org.py", line 18, in <module>
mbusdata = minidom.parse('mbus.xml')
File "/usr/lib/python2.7/xml/dom/minidom.py", line 1920, in parse
return expatbuilder.parse(file)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 922, in parse
fp = open(file, 'rb')
IOError: [Errno 2] No such file or directory: 'mbus.xml'


ei tulosta printillä

epäilen, että libmbus xml formaatissa on jokin yhteensopivuus ongelma pythonin kanssa

No eikös tuo sano että pitäsi parsia mbus.xml mutta kun ei sellaista löydy - mistäs sen pitäisi ilmiintyä ?
 
Vs: Talologger Muuttujat & Ohjelmointi

VesA sanoi:
No eikös tuo sano että pitäsi parsia mbus.xml mutta kun ei sellaista löydy - mistäs sen pitäisi ilmiintyä ?

tulee siitä kun ei löytänyt mbus' lta niin siellä on 'else' tuo mbus.xml, mitä ei käytännössä ole kun muuten ei tiedä toimiko vai ei mutta nyt lähti, kts ed. viesti
 
Vs: Talologger Muuttujat & Ohjelmointi

Python subprocess moduulissa olisi tarjolla 'helpompiakin metodeja. Esimerkiksi check_output ajaisi sen komennon suoraan ja saat sen tuloksen stringinä takaisin. Popen ja communicate on turhoo hienostelua ;)

https://docs.python.org/2/library/subprocess.html

Tuo shell=True mahdollistaa koko komentorimpsun antamisen yhtenä stringinä, jossa on kaikki argumentit mitä halutaan.

Esimerkki:

$ python
>>> import subprocess
>>> subprocess.check_output(['echo', 'moi!'])
'moi!\n'
>>> subprocess.check_output(['echo moi!'], shell=True)
'moi!\n'
 
Vs: Talologger Muuttujat & Ohjelmointi

täällä ei riitä taito moisiin
kun osaisi, niin voisi hakea vain sen tarvittavan tiedon, niinkuin nuo taloLoggerin valmiiksi mietityt modulit tekevät
nyt tässäkin tapauksessa haetaan ensin kaikki ja vika formaatissa ja siitä seulotaan ne muutama tarvittava

varmaan joku saisi tämänkin https://github.com/rscada/libmbus
tekemään vain tarvittavan, ja muussakin formaatissa, ja jos rakenne olisi erilainen (ID numero) ja tuo <Unit>Energy.... esiintyy useissakin kohdissa

Koodi:
<DataRecord id="1">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Energy (kWh)</Unit>
        <Value>67650</Value>
        <Timestamp>2017-11-04T15:56:17</Timestamp>
    </DataRecord>
, niin formaattiikin myöhemmin helpommin muutettavissa ja poimiminen helpompaa

mutta hyvä näinkin kun toimii nyt ja taloLoggeri ottaa tarvittavista tiedoista kopin SHELL modulilla

tuo perus seriali oli aika haastava 40 metrin kaapelilla, lukuvirheitä tuli milloin mistäkin
 
Vs: Talologger Muuttujat & Ohjelmointi

oliskohan tällaiseen herjaan mitään helppoa tehtävissä, toimii kun ajaa tiedostoon ja owfs poimii sieltä mutta taloLoggerin SHELL antaa seuraavanlaisen herjan

Koodi:
 Command status: 1
05.11.2017 14:30:03: SHELL4: ERROR: Error executing Shell data source command
  Command: /usr/bin/python /home/talo/Adafruit_Python_BMP/pressure.py
  Command output: Traceback (most recent call last):
  File "/home/talo/Adafruit_Python_BMP/pressure.py", line 5, in <module>
    sensor = BMP085.BMP085(busnum=0)
  File "/home/talo/Adafruit_Python_BMP/Adafruit_BMP/BMP085.py", line 47, in __init__
    self._device = I2C.Device(address, busnum)
  File "/usr/local/lib/python2.7/dist-packages/pyRock/I2C.py", line 48, in __init__
    self._bus = smbus.SMBus(busnum)
IOError: [Errno 13] Permission denied

toimii myös cron' issa ja riviltä suoraan
 
Vs: Talologger Muuttujat & Ohjelmointi

Ajaako talologger jollakin omalla / alemmalla käyttäjällä -> ei ole oikeuksia lopulta ajaa tuota skriptiä, joka I2C kautta lukee tiedot?
 
Vs: Talologger Muuttujat & Ohjelmointi

apophis sanoi:
Ajaako talologger jollakin omalla / alemmalla käyttäjällä -> ei ole oikeuksia lopulta ajaa tuota skriptiä, joka I2C kautta lukee tiedot?
käyttäjänä talo

ymmärränkö oikein että
/usr/local/lib/python2.7/dist-packages/pyRock/I2C.py
pitää antaa 'talo' käyttöoikeudet

pitääkö noille kaikille hakemistoille myös vai ainoastaan tuolle 'I2C.py'
minulla kun ei oikein ole hallinnassa nää jutut
 
Vs: Talologger Muuttujat & Ohjelmointi

jolla sanoi:
käyttäjänä talo

ymmärränkö oikein että
/usr/local/lib/python2.7/dist-packages/pyRock/I2C.py
pitää antaa 'talo' käyttöoikeudet

pitääkö noille kaikille hakemistoille myös vai ainoastaan tuolle 'I2C.py'
minulla kun ei oikein ole hallinnassa nää jutut

Enempi se ehkä näyttäisi siltä ettei se kärmes-skripti saa koskea I2C - laitteeseen, eli sitä pitäisi avata pythonia ajelevalle käyttäjälle.
 
Vs: Talologger Muuttujat & Ohjelmointi

VesA sanoi:
Enempi se ehkä näyttäisi siltä ettei se kärmes-skripti saa koskea I2C - laitteeseen, eli sitä pitäisi avata pythonia ajelevalle käyttäjälle.
niiiiiiin, eli, siis, tota noin.....pitäs tehdä jotain?

tuolla aiemmin postaamani, pari päivää sitten on myös kärmes-skripti, ja se on nyt käytössä ja toimii

etsin kiihkeästi mallia ja onko tällainen tuohon käypänen chown talo:talo ja kohde vai chmod -R 777
 
Vs: Talologger Muuttujat & Ohjelmointi

jolla sanoi:
niiiiiiin, eli, siis, tota noin.....pitäs tehdä jotain?

Se I2C-laite on voisi olla jonkinlainen sarjaportti /dev/ -hakemiston uumenissa. Veikkaan että I2C.py voisi avata sen jollain sellaisella nimellä, että sen sieltä löytäisi, mutta voihan tuo olla edelleen jemmattuna johonki ladattavaan moduliin.. sille laitteelle sitten vaan niitä oikeuksia samaan tapaan kuin tiedostoillekin.
 
Vs: Talologger Muuttujat & Ohjelmointi

Yleensä nuo laitteiden käyttöoikeudet hoidetaan nykyisissä linuxeissa lisäämällä käyttäjä ryhmään ("group"), joka sallii pääsyn ko. laitetta käpälöimään. Siis roottina käyttäjä enabloidaan vigr-editorilla lisäämällä /etc/group-tiedoston ao. groupin rivin perään käyttäjä (tässä tapauksessa "talo"), pilkulla erotettuna, jos viimeisen kaksoispisteen jälkeen on ko. rivillä jotakin muuta kuin tyhjää.

Näin siis menee standardilaitteilla, mutta en tiedä, onko tässä tapauksessa kuitenkin ehkä kyseessä vielä jokin kokeellinen viritys, joka ei noudata tätä standardiperiaatetta.
 
Vs: Talologger Muuttujat & Ohjelmointi

kotte sanoi:
Yleensä nuo laitteiden käyttöoikeudet hoidetaan nykyisissä linuxeissa lisäämällä käyttäjä ryhmään ("group"), joka sallii pääsyn ko. laitetta käpälöimään. Siis roottina käyttäjä enabloidaan vigr-editorilla lisäämällä /etc/group-tiedoston ao. groupin rivin perään käyttäjä (tässä tapauksessa "talo"), pilkulla erotettuna, jos viimeisen kaksoispisteen jälkeen on ko. rivillä jotakin muuta kuin tyhjää.

Näin siis menee standardilaitteilla, mutta en tiedä, onko tässä tapauksessa kuitenkin ehkä kyseessä vielä jokin kokeellinen viritys, joka ei noudata tätä standardiperiaatetta.

Hmm.. näin voi olla jos laitteen asennusohjelma käy bittejä kääntelemässä, mutta ei noilla perus-sarjaporteilla ole millään groupilla mitään oikeuksia... ei edes rootilla.
 
Vs: Talologger Muuttujat & Ohjelmointi

VesA sanoi:
Hmm.. näin voi olla jos laitteen asennusohjelma käy bittejä kääntelemässä, mutta ei noilla perus-sarjaporteilla ole millään groupilla mitään oikeuksia... ei edes rootilla.
Kyllä on esimerkiksi Ubuntussa, tässä näytteitä systeemistä, jolla tätä kirjoittelen (eli tty-laitteita systeemi tukee erinäisistä syistä, i2c-laitteet ovat ihan kylmässä tilassa, mutta kylläkin alustavasti rootille merkattuja):

...
crw--w---- 1 root tty 4, 0 loka 21 20:50 /dev/tty0
crw-rw---- 1 root dialout 4, 64 loka 21 20:50 /dev/ttyS0
crw-rw---- 1 root dialout 4, 72 loka 21 20:50 /dev/ttyS8
...
crw------- 1 root root 89, 11 loka 21 20:50 /dev/i2c-11
crw------- 1 root root 89, 10 loka 21 20:50 /dev/i2c-10
crw------- 1 root root 89, 1 loka 21 20:50 /dev/i2c-1
crw------- 1 root root 89, 0 loka 21 20:50 /dev/i2c-0
...
Riippuu sitten, miten portteja käpäillään (toki nuo voi poistaa systeemin kontrollista ja käsitellä suoraan omalla driverilla, mutta sittenpä täytyy ääritilanteessa hoitaa homma ihan laiterekisteritasolta ja keskeytysten käsittelystä alkaen itse).
 
Vs: Talologger Muuttujat & Ohjelmointi

ongelma ratkesi näillä, kiitti vinkeistä

Koodi:
..........
crw-rw---T 1 root i2c      89,   0 Nov  5 09:27 i2c-0
crw-rw---T 1 root i2c      89,   1 Nov  5 09:27 i2c-1
crw-rw---T 1 root i2c      89,   2 Nov  5 09:27 i2c-2
crw-rw---T 1 root i2c      89,   3 Nov  5 09:27 i2c-3
crw-rw---T 1 root i2c      89,   4 Nov  5 09:27 i2c-4
.............
i2c:x:107:talo
......
 
Satunnaisia virheitä tulee yksinkertaisten tiedostojen luennassa Talologgerilla.

Onko kokemuksia, mistä kiikastaa?


05.12.2020 11:52:00: SHELL9: ERROR: Error executing Shell data source command
Command: /bin/cat /mnt/ssd/tiedot5.txt
Command output:
Command status: -6
05.12.2020 12:32:01: SHELL36: ERROR: Error executing Shell data source command
Command: /bin/cat /mnt/ssd/tiedot7.txt
Command output:
Command status: -6
 
Takaisin
Ylös Bottom