BinaryParsed problem

User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Jak że nie jestem biegły w sprawach linuksowych :) mam problem z konfiguracją typu jak w temacie.
Chciałbym czytać stan z pliku txt, no chyba że jest możliwość odczytu bezpośrednio z maliny stanu gpio (BCM 21 i 26).
Zrobiłem coś takiego ale nie działa

Code: Select all

  - type: BinaryParsed
    state:0
     type:File
     file:"/home/dariusz/Windows/window1.txt"
     expiration_time_sec: 120
    parser:
      use: parser_1


Czy ktoś poprowadzi za rączkę jak to ugryźć
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
Robert Błaszczak
Posts: 5222
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Has thanked: 37 times
Been thanked: 27 times

Post

Code: Select all

channels:
  - type: BinaryParsed
    name: CZUJNIK POCZTY
    state: 0
    parser:
      type: Simple
      refresh_time_ms: 200
    source:
      type: File
      file: "/home/pi/supla-mailbox/data.txt"
W data.txt mam zapisywane wartości 0 lub 1 w zależności od stanu na GPIO. Stan GPIO odczytuję za pomocą programu w Python:

Code: Select all

import RPi.GPIO as GPIO
from time import sleep

GPIO.setwarnings(False)
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(12, GPIO.OUT) #Do GPIO12 można opcjonalnie podłączyć diodę LED (z rezystorem) sygnalizującą obecność korespondencji w skrzynce pocztowej
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Pierwszy kanał z odbiornika radiowego - sygnalizacja o włożeniu korespondencji do skrzynki
GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Drugi kanał z odbiornika radiowego - kasowanie statusu obecności korespondencji w skrzynce pocztowej

try:
        while True:
                sleep(0.1)
                State1 = GPIO.input(5)
                State2 = GPIO.input(6)
                if State1 == 0:
                        GPIO.output(12,GPIO.HIGH)
                        f = open("data.txt")
                        if f.read() == "0":
                                f = open("data.txt", "w")
                                f.write("1")
                                f.close()
                if State2 == 0:
                        GPIO.output(12,GPIO.LOW)
                        f = open("data.txt")
                        if f.read() == "1":
                                f = open("data.txt", "w")
                                f.write("0")
                                f.close()

except KeyboardInterrupt:
        GPIO.output(12, GPIO.LOW)
        GPIO.cleanup();
        f = open("data.txt", "w")
        f.write("0")
        f.close()
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Dzieki Robercie , cały czas posiłkuje sie twoim blogiem ale jakoś to przeoczyłem :D

EDIT : No , działa . Ale co ok 20 min zmienia się stan w apce mimo iż stan w plikach się nie zmienia .
nie wiem gdzie szukać przyczyny ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)

Return to “Pomoc”