(Tasmota) Berry Skript

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

Allgemeines

Mit dem Tasmota fuer den ESP32 hat eine weitere Skriptsprache "Berry Skript" Einzug gehalten.

Berry language by Guan Wenliang https://github.com/Skiars/berry

Sie kommt nicht mich nicht ganz so sperrig wie "normale" Skriptsprache vor und ist mit MicroPython (siehe Berry Introduction ganz am Ende) vergleichbar.

Die Dokumentation bei Tasmota beschraenkt sich auf

Die Dokumentation kommt mir nicht vollstaendig vor, oder es fehlen einfach zu oft Beispiele oder eine genaue vollstaendige Syntaxbeschreibung.

Die Beispiele auf die man zum besseren Verstaendnis zurueckgreifen kann sind noch Mangelware. Die Orginaldokumentation (s.o.) hat etwas mehr zu bieten.

Eines der besten Beispiele das ich gefunden habe ist hier zu finden. Weitere bitte gerne in den Kommentar.

Meine Rollladenmotoransteuerung gibt's demnaechst auch auf Github. Hier schon mal vorab eine Beta.

ShutterDriver
 1 import webserver # import webserver class
 2 
 3 class MyButtonMethods : Driver
 4 
 5 
 6   #- create a method for adding a button to the main menu -#
 7   def web_add_main_button()
 8     webserver.content_send("<p></p><button onclick='la(\"&m_toggle_main=1\");'>Toggle Main</button>")
 9   end
10  
11   def set_gpio(gpio1,gpio2)
12     gpio.digital_write(27,gpio1)
13     gpio.digital_write(14,gpio2)
14   end
15  
16  
17   #- As we can add only one sensor method we will have to combine them besides all other sensor readings in one method -#
18   def web_sensor()
19     import string
20     import persist
21 
22     if persist.find("state",-1) == -1
23         gpio.digital_write(27,0)
24         gpio.digital_write(14,0)
25         persist.state=0
26         persist.save()
27     end
28     if webserver.has_arg("m_toggle_main")
29       log("Button pressed",2)
30       log(string.format("State before: %s",persist.state),2)
31       var rel1 = gpio.digital_read(27)
32       var rel2 = gpio.digital_read(14)
33       string.format("Relais 1: %s Relais 2: %s",rel1,rel2)
34       log(string.format("Relais 1: %s Relais 2: %s",rel1,rel2),2)
35       var set =  false
36         if rel1 == 0 && rel2 == 0 && !set && persist.find("state") != 0 && persist.find("state") != 2 # wenn state und relaiszusand 'asynchron' sind
37             gpio.digital_write(14,0)
38             gpio.digital_write(27,0)            
39             persist.state = 0
40             set = true
41         end  
42         if rel1 == 0 && rel2 == 0 && !set
43             if persist.find("state") == 0
44                 #gpio.digital_write(27,1)
45                 tasmota.set_timer(1000, /->self.set_gpio(1,0))
46                 persist.state = 1
47                 set = true
48             end
49             if persist.find("state") == 2
50                 #gpio.digital_write(14,1)
51                 tasmota.set_timer(1000, /->self.set_gpio(0,1))
52                 persist.state = 3
53                 set = true
54             end
55         end
56         if rel1 == 1 && rel2 == 0 && !set
57             #gpio.digital_write(27,0)
58             tasmota.set_timer(0, /->self.set_gpio(0,0))
59             persist.state = 2
60             set = true
61         end
62         if rel1 == 0 && rel2 == 1 && !set
63             #gpio.digital_write(14,0)
64             tasmota.set_timer(0, /->self.set_gpio(0,0))            
65             persist.state = 0
66             set = true
67         end  
68         if rel1 == 1 && rel2 == 1 && !set # sollte niemals nie vorkommen !!!
69             #gpio.digital_write(14,0)
70             #gpio.digital_write(27,0) 
71             tasmota.set_timer(0, /->self.set_gpio(0,0))
72             persist.state = 0
73             set = true
74         end         
75         log(string.format("State now: %s",persist.state),2)
76         rel1 = gpio.digital_read(27)
77         rel2 = gpio.digital_read(14)
78         string.format("Relais 1: %s Relais 2: %s",rel1,rel2)
79         log(string.format("Relais 1: %s Relais 2: %s",rel1,rel2),2)
80         var msg = string.format(
81              "{s}Relais 1{m}%s{e}"..
82              "{s}Relais 2{m}%s{e}",
83               rel1, rel2)
84         tasmota.web_send(msg)
85     end #if
86   end #def
87 end #class
88 
89 d1 = MyButtonMethods()
90 tasmota.add_driver(d1)

Request for Comments


Kommentar hinzufügen
TippvomTibb freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, registriere dich bitte oder melde dich an.