[{"data":1,"prerenderedAt":1392},["ShallowReactive",2],{"manifest":3,"hreflang-alternates":1339,"doc-de-erste-schritte\u002Fvolang-and-volangvm":1344},{"site":4,"branding":6,"contact":8,"organization_schema":10,"languages":60,"website":71,"docs":243,"blog":1243},{"title":5},"Voldeno",{"logo":7,"company_name":5},"\u002Fimages\u002Flogo\u002Flogo_310.png",{"email":9},"contact@voldeno.com",{"schema_name":5,"legal_name":11,"founding_date":12,"tax_id":13,"identifiers":14,"address":21,"primary_email":9,"knows_about":26,"contact_points":44,"contact_point_available_languages":56},"Voldeno sp. z o.o.","2024","PL7252346262",[15,18],{"name":16,"value":17},"KRS","0001123648",{"name":19,"value":20},"REGON","52946949200000",{"street_address":22,"address_locality":23,"postal_code":24,"address_country":25},"Ogrodowa 8, Lobby B, 3p.","Łódź","91-062","PL",{"en":27,"pl":34,"de":39},[28,29,30,31,32,33],"Smart Home","Smart Home Systems","Smart Home Automation","Building Automation","IoT","Home Automation System",[35,28,36,37,32,38],"Inteligentny dom","System Smart Home","Automatyka budynkowa","System automatyki domowej",[28,40,41,42,32,43],"Smart-Home-Systeme","Smart-Home-Automatisierung","Gebäudeautomation","Hausautomationssystem",[45,48,51,54],{"email":46,"contact_type":47},"support@voldeno.com","technical support",{"email":49,"contact_type":50},"sales@voldeno.com","sales",{"email":52,"contact_type":53},"partners@voldeno.com","partnerships",{"email":9,"contact_type":55},"customer service",[57,58,59],"Polish","English","German",[61,65,68],{"code":62,"name":63,"default":64},"pl","Polski",true,{"code":66,"name":58,"default":67},"en",false,{"code":69,"name":70,"default":67},"de","Deutsch",{"enabled":64,"navigation":72,"path_keys":205,"section_index_slugs":233},{"de":73,"pl":130,"en":169},[74,80,86,92,102,108,114,125],{"title":75,"slug":76,"path":77,"order":78,"template":79},"Voldeno: Smart Home, Gebäudeautomation","index","de\u002Findex",0,"home",{"title":81,"slug":82,"path":83,"order":84,"template":85},"Ihr Zuhause","ihr-zuhause","de\u002Fihr-zuhause",1,"homeowners",{"title":87,"slug":88,"path":89,"order":90,"template":91},"Für Fachbetriebe","fuer-fachbetriebe","de\u002Ffuer-fachbetriebe",2,"professionals",{"title":93,"slug":94,"path":95,"order":96,"children":97},"Produkte","produkte","de\u002Fprodukte",3,[98],{"title":99,"slug":76,"path":100,"order":84,"template":101},"Smart-Home-Produkte​ von Voldeno","de\u002Fprodukte\u002Findex","products",{"title":103,"slug":104,"path":105,"order":106,"template":107},"Kontakt","kontakt","de\u002Fkontakt",4,"contact",{"title":109,"slug":110,"path":111,"order":112,"template":113},"Über uns","ueber-uns","de\u002Fueber-uns",5,"about",{"title":115,"slug":116,"path":117,"order":118,"children":119},"Rechtliches","rechtliches","de\u002Frechtliches",6,[120],{"title":121,"slug":122,"path":123,"order":84,"template":124},"Datenschutzerklärung","privacy-policy","de\u002Frechtliches\u002Fprivacy-policy","page",{"title":126,"slug":127,"path":128,"order":129},"Projekte","projekte","de\u002Fprojekte",999,[131,134,138,142,150,152,156,165],{"title":132,"slug":76,"path":133,"order":78,"template":79},"Smart Home, Automatyka budynkowa - Voldeno","pl\u002Findex",{"title":135,"slug":136,"path":137,"order":84,"template":85},"Twój Dom","twoj-dom","pl\u002Ftwoj-dom",{"title":139,"slug":140,"path":141,"order":90,"template":91},"Dla Profesjonalistów","dla-profesjonalistow","pl\u002Fdla-profesjonalistow",{"title":143,"slug":144,"path":145,"order":96,"children":146},"Produkty","produkty","pl\u002Fprodukty",[147],{"title":148,"slug":76,"path":149,"order":84,"template":101},"Inteligentne produkty​ Smart Home Voldeno","pl\u002Fprodukty\u002Findex",{"title":103,"slug":104,"path":151,"order":106,"template":107},"pl\u002Fkontakt",{"title":153,"slug":154,"path":155,"order":112,"template":113},"O nas","o-nas","pl\u002Fo-nas",{"title":157,"slug":158,"path":159,"order":118,"children":160},"Prawne","prawne","pl\u002Fprawne",[161],{"title":162,"slug":163,"path":164,"order":84,"template":124},"Polityka prywatności","polityka-prywatnosci","pl\u002Fprawne\u002Fpolityka-prywatnosci",{"title":166,"slug":167,"path":168,"order":129},"Realizacje","realizacje","pl\u002Frealizacje",[170,173,177,180,187,190,193,201],{"title":171,"slug":76,"path":172,"order":78,"template":79},"Voldeno: Smart Home, Building Automation","en\u002Findex",{"title":174,"slug":175,"path":176,"order":84,"template":85},"Your Home","your-home","en\u002Fyour-home",{"title":178,"slug":91,"path":179,"order":90,"template":91},"For Professionals","en\u002Fprofessionals",{"title":181,"slug":101,"path":182,"order":96,"children":183},"Products","en\u002Fproducts",[184],{"title":185,"slug":76,"path":186,"order":84,"template":101},"Smart Home Products​ from Voldeno","en\u002Fproducts\u002Findex",{"title":188,"slug":107,"path":189,"order":106,"template":107},"Contact","en\u002Fcontact",{"title":191,"slug":113,"path":192,"order":112,"template":113},"About Us","en\u002Fabout",{"title":194,"slug":195,"path":196,"order":118,"children":197},"Legal","legal","en\u002Flegal",[198],{"title":199,"slug":122,"path":200,"order":84,"template":124},"Privacy Policy","en\u002Flegal\u002Fprivacy-policy",{"title":202,"slug":203,"path":204,"order":129},"Projects","projects","en\u002Fprojects",{"module_1wire":206,"module_hub":210,"module_analog_input":214,"downloads":218,"module_relay":221,"privacy":225,"module_io":229},{"pl":207,"de":208,"en":209},"produkty\u002F1wire","produkte\u002F1wire","products\u002F1wire",{"en":211,"pl":212,"de":213},"products\u002Fhub","produkty\u002Fhub","produkte\u002Fhub",{"de":215,"pl":216,"en":217},"produkte\u002Fanalog-input","produkty\u002Fanalog-input","products\u002Fanalog-input",{"de":219,"pl":220,"en":219},"downloads","pobieranie",{"en":222,"pl":223,"de":224},"products\u002Frelay","produkty\u002Frelay","produkte\u002Frelay",{"pl":226,"de":227,"en":228},"prawne\u002Fpolityka-prywatnosci","rechtliches\u002Fprivacy-policy","legal\u002Fprivacy-policy",{"en":230,"pl":231,"de":232},"products\u002Fio","produkty\u002Fio","produkte\u002Fio",{"de":234,"en":237,"pl":240},{"projekte":235,"produkte":236},"projekte\u002Findex","produkte\u002Findex",{"products":238,"projects":239},"products\u002Findex","projects\u002Findex",{"realizacje":241,"produkty":242},"realizacje\u002Findex","produkty\u002Findex",{"enabled":64,"navigation":244,"section_redirects":1205},{"de":245,"pl":696,"en":958},[246,267,276,301,314,631,645,659,681,691],{"title":247,"slug":248,"path":249,"order":84,"children":250},"Erste Schritte","erste-schritte","de\u002Fdocs\u002Ferste-schritte",[251,255,259,263],{"title":252,"slug":253,"path":254,"order":84},"Grundlegende Konzepte und Terminologie","concepts","de\u002Fdocs\u002Ferste-schritte\u002Fconcepts",{"title":256,"slug":257,"path":258,"order":90},"Systemüberblick für Installateure","system-overview","de\u002Fdocs\u002Ferste-schritte\u002Fsystem-overview",{"title":260,"slug":261,"path":262,"order":96},"Logik in Voldeno Studio von Grund auf definieren","logik-von-grund-auf-definieren","de\u002Fdocs\u002Ferste-schritte\u002Flogik-von-grund-auf-definieren",{"title":264,"slug":265,"path":266,"order":106},"Volang und VolangVM: warum ein Smart Home eine eigene Automatisierungssprache braucht","volang-and-volangvm","de\u002Fdocs\u002Ferste-schritte\u002Fvolang-and-volangvm",{"title":268,"slug":269,"path":270,"order":90,"children":271},"Systemarchitektur","systemarchitektur","de\u002Fdocs\u002Fsystemarchitektur",[272],{"title":273,"slug":274,"path":275,"order":84},"Sicherheitsarchitektur","security","de\u002Fdocs\u002Fsystemarchitektur\u002Fsecurity",{"title":277,"slug":278,"path":279,"order":96,"children":280},"Module und Peripherie","module","de\u002Fdocs\u002Fmodule",[281,285,289,293,297],{"title":282,"slug":283,"path":284,"order":84},"Verkabelung des Hub-Moduls","hub-wiring","de\u002Fdocs\u002Fmodule\u002Fhub-wiring",{"title":286,"slug":287,"path":288,"order":90},"Verkabelung des I\u002FO-Moduls","io-wiring","de\u002Fdocs\u002Fmodule\u002Fio-wiring",{"title":290,"slug":291,"path":292,"order":96},"Verkabelung des Relay-Moduls","relay-wiring","de\u002Fdocs\u002Fmodule\u002Frelay-wiring",{"title":294,"slug":295,"path":296,"order":106},"Verkabelung des 1-Wire-Moduls","1wire-wiring","de\u002Fdocs\u002Fmodule\u002F1wire-wiring",{"title":298,"slug":299,"path":300,"order":112},"Verkabelung des Analog-Input-Moduls","analog-input-wiring","de\u002Fdocs\u002Fmodule\u002Fanalog-input-wiring",{"title":302,"slug":303,"path":304,"order":106,"children":305},"Verkabelungsrichtlinien","verkabelung","de\u002Fdocs\u002Fverkabelung",[306,310],{"title":307,"slug":308,"path":309,"order":84},"Bustopologie und Verkabelung","bus-topology","de\u002Fdocs\u002Fverkabelung\u002Fbus-topology",{"title":311,"slug":312,"path":313,"order":90},"Dimensionierung und Verteilung der Spannungsversorgung","power-supply","de\u002Fdocs\u002Fverkabelung\u002Fpower-supply",{"title":315,"slug":316,"path":317,"order":112,"children":318},"Logikbausteine","logikbausteine","de\u002Fdocs\u002Flogikbausteine",[319,325,376,616],{"title":320,"slug":321,"path":322,"order":78,"template":323,"translation_key":324},"Übersicht","uebersicht","de\u002Fdocs\u002Flogikbausteine\u002Fuebersicht","logic-block-index","logic-blocks-overview",{"title":326,"slug":327,"path":328,"order":84,"children":329},"Eingänge","input","de\u002Fdocs\u002Flogikbausteine\u002Finput",[330,336,341,346,351,356,361,366,371],{"title":331,"slug":332,"path":333,"order":78,"template":334,"translation_key":335},"Binary input","binary_input","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fbinary_input","logic-block","logic-block-binary_input",{"title":337,"slug":338,"path":339,"order":78,"template":334,"translation_key":340},"Boolean constant","boolean_constant","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fboolean_constant","logic-block-boolean_constant",{"title":342,"slug":343,"path":344,"order":78,"template":334,"translation_key":345},"Numeric constant","numeric_constant","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fnumeric_constant","logic-block-numeric_constant",{"title":347,"slug":348,"path":349,"order":78,"template":334,"translation_key":350},"Numeric input","numeric_input","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fnumeric_input","logic-block-numeric_input",{"title":352,"slug":353,"path":354,"order":78,"template":334,"translation_key":355},"Mode monitor","operation_mode_monitor","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Foperation_mode_monitor","logic-block-operation_mode_monitor",{"title":357,"slug":358,"path":359,"order":78,"template":334,"translation_key":360},"PulseAt","pulse_at","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fpulse_at","logic-block-pulse_at",{"title":362,"slug":363,"path":364,"order":78,"template":334,"translation_key":365},"Schedule","schedule","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fschedule","logic-block-schedule",{"title":367,"slug":368,"path":369,"order":78,"template":334,"translation_key":370},"String constant","string_constant","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fstring_constant","logic-block-string_constant",{"title":372,"slug":373,"path":374,"order":78,"template":334,"translation_key":375},"Switch","switch","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fswitch","logic-block-switch",{"title":377,"slug":378,"path":379,"order":90,"children":380},"Verarbeitung","process","de\u002Fdocs\u002Flogikbausteine\u002Fprocess",[381,386,391,396,401,406,411,416,421,426,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,531,536,541,546,551,556,561,566,571,576,581,586,591,596,601,606,611],{"title":382,"slug":383,"path":384,"order":78,"template":334,"translation_key":385},"Binary limiter","binary_limiter","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fbinary_limiter","logic-block-binary_limiter",{"title":387,"slug":388,"path":389,"order":78,"template":334,"translation_key":390},"Boolean to string","boolean_to_string","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fboolean_to_string","logic-block-boolean_to_string",{"title":392,"slug":393,"path":394,"order":78,"template":334,"translation_key":395},"Climate regulator","climate_regulator","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fclimate_regulator","logic-block-climate_regulator",{"title":397,"slug":398,"path":399,"order":78,"template":334,"translation_key":400},"Climate regulator hub","climate_regulator_hub","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fclimate_regulator_hub","logic-block-climate_regulator_hub",{"title":402,"slug":403,"path":404,"order":78,"template":334,"translation_key":405},"Delay","delay","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fdelay","logic-block-delay",{"title":407,"slug":408,"path":409,"order":78,"template":334,"translation_key":410},"Delayed Pulse","delayed_pulse","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fdelayed_pulse","logic-block-delayed_pulse",{"title":412,"slug":413,"path":414,"order":78,"template":334,"translation_key":415},"Door, window","door_window_monitor","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fdoor_window_monitor","logic-block-door_window_monitor",{"title":417,"slug":418,"path":419,"order":78,"template":334,"translation_key":420},"Edge detector","edge_detector","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fedge_detector","logic-block-edge_detector",{"title":422,"slug":423,"path":424,"order":78,"template":334,"translation_key":425},"HTTP Request","http_request","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fhttp_request","logic-block-http_request",{"title":427,"slug":428,"path":429,"order":78,"template":334,"translation_key":430},"Hysteresis","hysteresis","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fhysteresis","logic-block-hysteresis",{"title":432,"slug":433,"path":434,"order":78,"template":334,"translation_key":435},"Irrigation","irrigation","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Firrigation","logic-block-irrigation",{"title":437,"slug":438,"path":439,"order":78,"template":334,"translation_key":440},"JSON Get Boolean","json_get_boolean","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fjson_get_boolean","logic-block-json_get_boolean",{"title":442,"slug":443,"path":444,"order":78,"template":334,"translation_key":445},"JSON Get Number","json_get_number","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fjson_get_number","logic-block-json_get_number",{"title":447,"slug":448,"path":449,"order":78,"template":334,"translation_key":450},"JSON Get String","json_get_string","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fjson_get_string","logic-block-json_get_string",{"title":452,"slug":453,"path":454,"order":78,"template":334,"translation_key":455},"Level to pulse","level_to_pulse","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Flevel_to_pulse","logic-block-level_to_pulse",{"title":457,"slug":458,"path":459,"order":78,"template":334,"translation_key":460},"Logic::And","logic_and","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Flogic_and","logic-block-logic_and",{"title":462,"slug":463,"path":464,"order":78,"template":334,"translation_key":465},"Logic::Not","logic_not","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Flogic_not","logic-block-logic_not",{"title":467,"slug":468,"path":469,"order":78,"template":334,"translation_key":470},"Logic::Or","logic_or","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Flogic_or","logic-block-logic_or",{"title":472,"slug":473,"path":474,"order":78,"template":334,"translation_key":475},"Math::Abs","math_abs","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_abs","logic-block-math_abs",{"title":477,"slug":478,"path":479,"order":78,"template":334,"translation_key":480},"Math::Add","math_add","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_add","logic-block-math_add",{"title":482,"slug":483,"path":484,"order":78,"template":334,"translation_key":485},"Math::Average","math_average","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_average","logic-block-math_average",{"title":487,"slug":488,"path":489,"order":78,"template":334,"translation_key":490},"Math::Ceil","math_ceil","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_ceil","logic-block-math_ceil",{"title":492,"slug":493,"path":494,"order":78,"template":334,"translation_key":495},"Math::Divide","math_divide","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_divide","logic-block-math_divide",{"title":497,"slug":498,"path":499,"order":78,"template":334,"translation_key":500},"Math::Floor","math_floor","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_floor","logic-block-math_floor",{"title":502,"slug":503,"path":504,"order":78,"template":334,"translation_key":505},"Math::Max","math_max","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_max","logic-block-math_max",{"title":507,"slug":508,"path":509,"order":78,"template":334,"translation_key":510},"Math::Min","math_min","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_min","logic-block-math_min",{"title":512,"slug":513,"path":514,"order":78,"template":334,"translation_key":515},"Math::Modulo","math_modulo","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_modulo","logic-block-math_modulo",{"title":517,"slug":518,"path":519,"order":78,"template":334,"translation_key":520},"Math::Multiply","math_multiply","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_multiply","logic-block-math_multiply",{"title":522,"slug":523,"path":524,"order":78,"template":334,"translation_key":525},"Math::Random","math_random","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_random","logic-block-math_random",{"title":527,"slug":528,"path":529,"order":78,"template":334,"translation_key":530},"Math::Round","math_round","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_round","logic-block-math_round",{"title":532,"slug":533,"path":534,"order":78,"template":334,"translation_key":535},"Math::Subtract","math_subtract","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_subtract","logic-block-math_subtract",{"title":537,"slug":538,"path":539,"order":78,"template":334,"translation_key":540},"Motor axis","motor_axis","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmotor_axis","logic-block-motor_axis",{"title":542,"slug":543,"path":544,"order":78,"template":334,"translation_key":545},"Moving average","moving_average","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmoving_average","logic-block-moving_average",{"title":547,"slug":548,"path":549,"order":78,"template":334,"translation_key":550},"Number to string","number_to_string","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fnumber_to_string","logic-block-number_to_string",{"title":552,"slug":553,"path":554,"order":78,"template":334,"translation_key":555},"Numeric latch","numeric_latch","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fnumeric_latch","logic-block-numeric_latch",{"title":557,"slug":558,"path":559,"order":78,"template":334,"translation_key":560},"Numeric predicate","numeric_predicate","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fnumeric_predicate","logic-block-numeric_predicate",{"title":562,"slug":563,"path":564,"order":78,"template":334,"translation_key":565},"Numeric throttle","numeric_throttle","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fnumeric_throttle","logic-block-numeric_throttle",{"title":567,"slug":568,"path":569,"order":78,"template":334,"translation_key":570},"PubSub::Publish","pubsub","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fpubsub","logic-block-pubsub",{"title":572,"slug":573,"path":574,"order":78,"template":334,"translation_key":575},"Pulse counter","pulse_counter","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fpulse_counter","logic-block-pulse_counter",{"title":577,"slug":578,"path":579,"order":78,"template":334,"translation_key":580},"Pulse gate","pulse_gate","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fpulse_gate","logic-block-pulse_gate",{"title":582,"slug":583,"path":584,"order":78,"template":334,"translation_key":585},"Pulse throttle","pulse_throttle","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fpulse_throttle","logic-block-pulse_throttle",{"title":587,"slug":588,"path":589,"order":78,"template":334,"translation_key":590},"Sequencer","sequencer","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fsequencer","logic-block-sequencer",{"title":592,"slug":593,"path":594,"order":78,"template":334,"translation_key":595},"Shading","shading","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fshading","logic-block-shading",{"title":597,"slug":598,"path":599,"order":78,"template":334,"translation_key":600},"String format","string_format","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fstring_format","logic-block-string_format",{"title":602,"slug":603,"path":604,"order":78,"template":334,"translation_key":605},"String latch","string_latch","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fstring_latch","logic-block-string_latch",{"title":607,"slug":608,"path":609,"order":78,"template":334,"translation_key":610},"Toggle","toggle","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Ftoggle","logic-block-toggle",{"title":612,"slug":613,"path":614,"order":78,"template":334,"translation_key":615},"Variable Delayed Pulse","variable_delayed_pulse","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fvariable_delayed_pulse","logic-block-variable_delayed_pulse",{"title":617,"slug":618,"path":619,"order":96,"children":620},"Ausgänge","output","de\u002Fdocs\u002Flogikbausteine\u002Foutput",[621,626],{"title":622,"slug":623,"path":624,"order":78,"template":334,"translation_key":625},"Mode controller","operation_mode_controller","de\u002Fdocs\u002Flogikbausteine\u002Foutput\u002Foperation_mode_controller","logic-block-operation_mode_controller",{"title":627,"slug":628,"path":629,"order":78,"template":334,"translation_key":630},"Relay","relay","de\u002Fdocs\u002Flogikbausteine\u002Foutput\u002Frelay","logic-block-relay",{"title":632,"slug":633,"path":634,"order":118,"children":635},"Programmiersprache Volang","volang","de\u002Fdocs\u002Fvolang",[636,640],{"title":637,"slug":638,"path":639,"order":84},"Die Sprache Volang","language","de\u002Fdocs\u002Fvolang\u002Flanguage",{"title":641,"slug":642,"path":643,"order":90,"template":644},"Standardbibliothek","stdlib","de\u002Fdocs\u002Fvolang\u002Fstdlib","api-reference",{"title":646,"slug":647,"path":648,"order":649,"children":650},"Software und Werkzeuge","software","de\u002Fdocs\u002Fsoftware",7,[651,655],{"title":652,"slug":653,"path":654,"order":84},"Voldeno Studio - Installation und Rundgang","studio","de\u002Fdocs\u002Fsoftware\u002Fstudio",{"title":656,"slug":657,"path":658,"order":90},"Voldeno Studio - Zeitpläne","schedules","de\u002Fdocs\u002Fsoftware\u002Fschedules",{"title":660,"slug":661,"path":662,"order":663,"children":664},"Ratgeber und Anleitungen","ratgeber","de\u002Fdocs\u002Fratgeber",8,[665,669,673,677],{"title":666,"slug":667,"path":668,"order":84},"Was ist ein Smart Home und wie funktioniert es?","was-ist-ein-smart-home","de\u002Fdocs\u002Fratgeber\u002Fwas-ist-ein-smart-home",{"title":670,"slug":671,"path":672,"order":90},"Welches Smart-Home-System sollte man wählen? Ein praktischer Leitfaden","smart-home-system-auswaehlen","de\u002Fdocs\u002Fratgeber\u002Fsmart-home-system-auswaehlen",{"title":674,"slug":675,"path":676,"order":96},"Was kostet ein Smart Home? Drei Voldeno-Installationsvarianten mit Modulen und Preisen","was-kostet-ein-smart-home","de\u002Fdocs\u002Fratgeber\u002Fwas-kostet-ein-smart-home",{"title":678,"slug":679,"path":680,"order":106},"Die 7 häufigsten Fehler bei der Smart-Home-Planung","smart-home-planungsfehler","de\u002Fdocs\u002Fratgeber\u002Fsmart-home-planungsfehler",{"title":682,"slug":683,"path":684,"order":685,"children":686},"Fehlerbehebung und Diagnose","fehlerbehebung","de\u002Fdocs\u002Ffehlerbehebung",9,[687],{"title":688,"slug":689,"path":690,"order":84},"Fehlerbehebung bei der Bus-Kommunikation","bus-communication","de\u002Fdocs\u002Ffehlerbehebung\u002Fbus-communication",{"title":692,"slug":693,"path":694,"order":695},"Häufig gestellte Fragen","faq","de\u002Fdocs\u002Ffaq",10,[697,718,727,752,765,902,914,925,946,955],{"title":698,"slug":699,"path":700,"order":84,"children":701},"Pierwsze kroki","pierwsze-kroki","pl\u002Fdocs\u002Fpierwsze-kroki",[702,706,710,714],{"title":703,"slug":704,"path":705,"order":84},"Podstawowe pojęcia i terminologia","pojecia","pl\u002Fdocs\u002Fpierwsze-kroki\u002Fpojecia",{"title":707,"slug":708,"path":709,"order":90},"Przegląd systemu dla instalatorów","przeglad-systemu","pl\u002Fdocs\u002Fpierwsze-kroki\u002Fprzeglad-systemu",{"title":711,"slug":712,"path":713,"order":96},"Jak zdefiniować logikę w Voldeno Studio od zera","definiowanie-logiki-w-voldeno-studio","pl\u002Fdocs\u002Fpierwsze-kroki\u002Fdefiniowanie-logiki-w-voldeno-studio",{"title":715,"slug":716,"path":717,"order":106},"Volang i VolangVM: po co inteligentny dom potrzebuje własnego języka automatyki","volang-i-volangvm","pl\u002Fdocs\u002Fpierwsze-kroki\u002Fvolang-i-volangvm",{"title":719,"slug":720,"path":721,"order":90,"children":722},"Architektura systemu","architektura-systemu","pl\u002Fdocs\u002Farchitektura-systemu",[723],{"title":724,"slug":725,"path":726,"order":84},"Architektura bezpieczeństwa","bezpieczenstwo","pl\u002Fdocs\u002Farchitektura-systemu\u002Fbezpieczenstwo",{"title":728,"slug":729,"path":730,"order":96,"children":731},"Moduły i peryferia","moduly","pl\u002Fdocs\u002Fmoduly",[732,736,740,744,748],{"title":733,"slug":734,"path":735,"order":84},"Okablowanie modułu HUB","okablowanie-hub","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-hub",{"title":737,"slug":738,"path":739,"order":90},"Okablowanie modułu I\u002FO","okablowanie-io","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-io",{"title":741,"slug":742,"path":743,"order":96},"Okablowanie modułu RELAY","okablowanie-relay","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-relay",{"title":745,"slug":746,"path":747,"order":106},"Okablowanie modułu 1-Wire","okablowanie-1wire","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-1wire",{"title":749,"slug":750,"path":751,"order":112},"Okablowanie modułu Analog Input","okablowanie-analog-input","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-analog-input",{"title":753,"slug":754,"path":755,"order":106,"children":756},"Wytyczne okablowania","okablowanie","pl\u002Fdocs\u002Fokablowanie",[757,761],{"title":758,"slug":759,"path":760,"order":84},"Topologia i okablowanie magistrali","topologia-magistrali","pl\u002Fdocs\u002Fokablowanie\u002Ftopologia-magistrali",{"title":762,"slug":763,"path":764,"order":90},"Dobór i dystrybucja zasilania","zasilanie","pl\u002Fdocs\u002Fokablowanie\u002Fzasilanie",{"title":766,"slug":767,"path":768,"order":112,"children":769},"Bloki logiczne","bloki-logiczne","pl\u002Fdocs\u002Fbloki-logiczne",[770,774,796,894],{"title":771,"slug":772,"path":773,"order":78,"template":323,"translation_key":324},"Przegląd","przeglad","pl\u002Fdocs\u002Fbloki-logiczne\u002Fprzeglad",{"title":775,"slug":327,"path":776,"order":84,"children":777},"Wejścia","pl\u002Fdocs\u002Fbloki-logiczne\u002Finput",[778,780,782,784,786,788,790,792,794],{"title":331,"slug":332,"path":779,"order":78,"template":334,"translation_key":335},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fbinary_input",{"title":337,"slug":338,"path":781,"order":78,"template":334,"translation_key":340},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fboolean_constant",{"title":342,"slug":343,"path":783,"order":78,"template":334,"translation_key":345},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fnumeric_constant",{"title":347,"slug":348,"path":785,"order":78,"template":334,"translation_key":350},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fnumeric_input",{"title":352,"slug":353,"path":787,"order":78,"template":334,"translation_key":355},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Foperation_mode_monitor",{"title":357,"slug":358,"path":789,"order":78,"template":334,"translation_key":360},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fpulse_at",{"title":362,"slug":363,"path":791,"order":78,"template":334,"translation_key":365},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fschedule",{"title":367,"slug":368,"path":793,"order":78,"template":334,"translation_key":370},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fstring_constant",{"title":372,"slug":373,"path":795,"order":78,"template":334,"translation_key":375},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fswitch",{"title":797,"slug":378,"path":798,"order":90,"children":799},"Przetwarzanie","pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess",[800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892],{"title":382,"slug":383,"path":801,"order":78,"template":334,"translation_key":385},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fbinary_limiter",{"title":387,"slug":388,"path":803,"order":78,"template":334,"translation_key":390},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fboolean_to_string",{"title":392,"slug":393,"path":805,"order":78,"template":334,"translation_key":395},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fclimate_regulator",{"title":397,"slug":398,"path":807,"order":78,"template":334,"translation_key":400},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fclimate_regulator_hub",{"title":402,"slug":403,"path":809,"order":78,"template":334,"translation_key":405},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fdelay",{"title":407,"slug":408,"path":811,"order":78,"template":334,"translation_key":410},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fdelayed_pulse",{"title":412,"slug":413,"path":813,"order":78,"template":334,"translation_key":415},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fdoor_window_monitor",{"title":417,"slug":418,"path":815,"order":78,"template":334,"translation_key":420},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fedge_detector",{"title":422,"slug":423,"path":817,"order":78,"template":334,"translation_key":425},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fhttp_request",{"title":427,"slug":428,"path":819,"order":78,"template":334,"translation_key":430},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fhysteresis",{"title":432,"slug":433,"path":821,"order":78,"template":334,"translation_key":435},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Firrigation",{"title":437,"slug":438,"path":823,"order":78,"template":334,"translation_key":440},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fjson_get_boolean",{"title":442,"slug":443,"path":825,"order":78,"template":334,"translation_key":445},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fjson_get_number",{"title":447,"slug":448,"path":827,"order":78,"template":334,"translation_key":450},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fjson_get_string",{"title":452,"slug":453,"path":829,"order":78,"template":334,"translation_key":455},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flevel_to_pulse",{"title":457,"slug":458,"path":831,"order":78,"template":334,"translation_key":460},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flogic_and",{"title":462,"slug":463,"path":833,"order":78,"template":334,"translation_key":465},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flogic_not",{"title":467,"slug":468,"path":835,"order":78,"template":334,"translation_key":470},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flogic_or",{"title":472,"slug":473,"path":837,"order":78,"template":334,"translation_key":475},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_abs",{"title":477,"slug":478,"path":839,"order":78,"template":334,"translation_key":480},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_add",{"title":482,"slug":483,"path":841,"order":78,"template":334,"translation_key":485},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_average",{"title":487,"slug":488,"path":843,"order":78,"template":334,"translation_key":490},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_ceil",{"title":492,"slug":493,"path":845,"order":78,"template":334,"translation_key":495},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_divide",{"title":497,"slug":498,"path":847,"order":78,"template":334,"translation_key":500},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_floor",{"title":502,"slug":503,"path":849,"order":78,"template":334,"translation_key":505},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_max",{"title":507,"slug":508,"path":851,"order":78,"template":334,"translation_key":510},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_min",{"title":512,"slug":513,"path":853,"order":78,"template":334,"translation_key":515},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_modulo",{"title":517,"slug":518,"path":855,"order":78,"template":334,"translation_key":520},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_multiply",{"title":522,"slug":523,"path":857,"order":78,"template":334,"translation_key":525},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_random",{"title":527,"slug":528,"path":859,"order":78,"template":334,"translation_key":530},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_round",{"title":532,"slug":533,"path":861,"order":78,"template":334,"translation_key":535},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_subtract",{"title":537,"slug":538,"path":863,"order":78,"template":334,"translation_key":540},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmotor_axis",{"title":542,"slug":543,"path":865,"order":78,"template":334,"translation_key":545},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmoving_average",{"title":547,"slug":548,"path":867,"order":78,"template":334,"translation_key":550},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumber_to_string",{"title":552,"slug":553,"path":869,"order":78,"template":334,"translation_key":555},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumeric_latch",{"title":557,"slug":558,"path":871,"order":78,"template":334,"translation_key":560},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumeric_predicate",{"title":562,"slug":563,"path":873,"order":78,"template":334,"translation_key":565},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumeric_throttle",{"title":567,"slug":568,"path":875,"order":78,"template":334,"translation_key":570},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpubsub",{"title":572,"slug":573,"path":877,"order":78,"template":334,"translation_key":575},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpulse_counter",{"title":577,"slug":578,"path":879,"order":78,"template":334,"translation_key":580},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpulse_gate",{"title":582,"slug":583,"path":881,"order":78,"template":334,"translation_key":585},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpulse_throttle",{"title":587,"slug":588,"path":883,"order":78,"template":334,"translation_key":590},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fsequencer",{"title":592,"slug":593,"path":885,"order":78,"template":334,"translation_key":595},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fshading",{"title":597,"slug":598,"path":887,"order":78,"template":334,"translation_key":600},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fstring_format",{"title":602,"slug":603,"path":889,"order":78,"template":334,"translation_key":605},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fstring_latch",{"title":607,"slug":608,"path":891,"order":78,"template":334,"translation_key":610},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Ftoggle",{"title":612,"slug":613,"path":893,"order":78,"template":334,"translation_key":615},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fvariable_delayed_pulse",{"title":895,"slug":618,"path":896,"order":96,"children":897},"Wyjścia","pl\u002Fdocs\u002Fbloki-logiczne\u002Foutput",[898,900],{"title":622,"slug":623,"path":899,"order":78,"template":334,"translation_key":625},"pl\u002Fdocs\u002Fbloki-logiczne\u002Foutput\u002Foperation_mode_controller",{"title":627,"slug":628,"path":901,"order":78,"template":334,"translation_key":630},"pl\u002Fdocs\u002Fbloki-logiczne\u002Foutput\u002Frelay",{"title":903,"slug":633,"path":904,"order":118,"children":905},"Język programowania Volang","pl\u002Fdocs\u002Fvolang",[906,910],{"title":907,"slug":908,"path":909,"order":84},"Język Volang","jezyk","pl\u002Fdocs\u002Fvolang\u002Fjezyk",{"title":911,"slug":912,"path":913,"order":90,"template":644},"Biblioteka standardowa","biblioteka-standardowa","pl\u002Fdocs\u002Fvolang\u002Fbiblioteka-standardowa",{"title":915,"slug":916,"path":917,"order":649,"children":918},"Oprogramowanie","oprogramowanie","pl\u002Fdocs\u002Foprogramowanie",[919,922],{"title":920,"slug":653,"path":921,"order":84},"Voldeno Studio - Instalacja i przewodnik","pl\u002Fdocs\u002Foprogramowanie\u002Fstudio",{"title":923,"slug":657,"path":924,"order":90},"Voldeno Studio - Harmonogramy","pl\u002Fdocs\u002Foprogramowanie\u002Fschedules",{"title":926,"slug":927,"path":928,"order":663,"children":929},"Poradniki","poradniki","pl\u002Fdocs\u002Fporadniki",[930,934,938,942],{"title":931,"slug":932,"path":933,"order":84},"Czym jest smart home i jak działa?","czym-jest-smart-home","pl\u002Fdocs\u002Fporadniki\u002Fczym-jest-smart-home",{"title":935,"slug":936,"path":937,"order":90},"Jaki system smart home wybrać? Praktyczny przewodnik","jaki-system-smart-home-wybrac","pl\u002Fdocs\u002Fporadniki\u002Fjaki-system-smart-home-wybrac",{"title":939,"slug":940,"path":941,"order":96},"Ile kosztuje inteligentny dom? Trzy warianty instalacji Voldeno z modułami i cenami","ile-kosztuje-inteligentny-dom","pl\u002Fdocs\u002Fporadniki\u002File-kosztuje-inteligentny-dom",{"title":943,"slug":944,"path":945,"order":106},"7 najczęstszych błędów przy projektowaniu instalacji smart home","bledy-przy-projektowaniu-smart-home","pl\u002Fdocs\u002Fporadniki\u002Fbledy-przy-projektowaniu-smart-home",{"title":947,"slug":948,"path":949,"order":685,"children":950},"Diagnostyka i rozwiązywanie problemów","diagnostyka","pl\u002Fdocs\u002Fdiagnostyka",[951],{"title":952,"slug":953,"path":954,"order":84},"Rozwiązywanie problemów z komunikacją magistrali","komunikacja-magistrali","pl\u002Fdocs\u002Fdiagnostyka\u002Fkomunikacja-magistrali",{"title":956,"slug":693,"path":957,"order":695},"Często zadawane pytania","pl\u002Fdocs\u002Ffaq",[959,977,985,1005,1016,1153,1163,1173,1194,1202],{"title":960,"slug":961,"path":962,"order":84,"children":963},"Getting Started","getting-started","en\u002Fdocs\u002Fgetting-started",[964,967,970,974],{"title":965,"slug":253,"path":966,"order":84},"Core Concepts and Terminology","en\u002Fdocs\u002Fgetting-started\u002Fconcepts",{"title":968,"slug":257,"path":969,"order":90},"System Overview for Installers","en\u002Fdocs\u002Fgetting-started\u002Fsystem-overview",{"title":971,"slug":972,"path":973,"order":96},"How to define logic in Voldeno Studio from scratch","define-logic-in-voldeno-studio","en\u002Fdocs\u002Fgetting-started\u002Fdefine-logic-in-voldeno-studio",{"title":975,"slug":265,"path":976,"order":106},"Volang and VolangVM: why a smart home needs its own automation language","en\u002Fdocs\u002Fgetting-started\u002Fvolang-and-volangvm",{"title":978,"slug":979,"path":980,"order":90,"children":981},"System Architecture","system-architecture","en\u002Fdocs\u002Fsystem-architecture",[982],{"title":983,"slug":274,"path":984,"order":84},"Security Architecture","en\u002Fdocs\u002Fsystem-architecture\u002Fsecurity",{"title":986,"slug":987,"path":988,"order":96,"children":989},"Modules & Peripherals","modules","en\u002Fdocs\u002Fmodules",[990,993,996,999,1002],{"title":991,"slug":283,"path":992,"order":84},"Hub Module Wiring","en\u002Fdocs\u002Fmodules\u002Fhub-wiring",{"title":994,"slug":287,"path":995,"order":90},"I\u002FO Module Wiring","en\u002Fdocs\u002Fmodules\u002Fio-wiring",{"title":997,"slug":291,"path":998,"order":96},"Relay Module Wiring","en\u002Fdocs\u002Fmodules\u002Frelay-wiring",{"title":1000,"slug":295,"path":1001,"order":106},"1-Wire Module Wiring","en\u002Fdocs\u002Fmodules\u002F1wire-wiring",{"title":1003,"slug":299,"path":1004,"order":112},"Analog Input Module Wiring","en\u002Fdocs\u002Fmodules\u002Fanalog-input-wiring",{"title":1006,"slug":1007,"path":1008,"order":106,"children":1009},"Wiring Guidelines","wiring","en\u002Fdocs\u002Fwiring",[1010,1013],{"title":1011,"slug":308,"path":1012,"order":84},"Bus Topology & Wiring","en\u002Fdocs\u002Fwiring\u002Fbus-topology",{"title":1014,"slug":312,"path":1015,"order":90},"Power Supply Sizing and Distribution","en\u002Fdocs\u002Fwiring\u002Fpower-supply",{"title":1017,"slug":1018,"path":1019,"order":112,"children":1020},"Logic Blocks","logic-blocks","en\u002Fdocs\u002Flogic-blocks",[1021,1025,1047,1145],{"title":1022,"slug":1023,"path":1024,"order":78,"template":323,"translation_key":324},"Overview","overview","en\u002Fdocs\u002Flogic-blocks\u002Foverview",{"title":1026,"slug":327,"path":1027,"order":84,"children":1028},"Input","en\u002Fdocs\u002Flogic-blocks\u002Finput",[1029,1031,1033,1035,1037,1039,1041,1043,1045],{"title":331,"slug":332,"path":1030,"order":78,"template":334,"translation_key":335},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fbinary_input",{"title":337,"slug":338,"path":1032,"order":78,"template":334,"translation_key":340},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fboolean_constant",{"title":342,"slug":343,"path":1034,"order":78,"template":334,"translation_key":345},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fnumeric_constant",{"title":347,"slug":348,"path":1036,"order":78,"template":334,"translation_key":350},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fnumeric_input",{"title":352,"slug":353,"path":1038,"order":78,"template":334,"translation_key":355},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Foperation_mode_monitor",{"title":357,"slug":358,"path":1040,"order":78,"template":334,"translation_key":360},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fpulse_at",{"title":362,"slug":363,"path":1042,"order":78,"template":334,"translation_key":365},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fschedule",{"title":367,"slug":368,"path":1044,"order":78,"template":334,"translation_key":370},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fstring_constant",{"title":372,"slug":373,"path":1046,"order":78,"template":334,"translation_key":375},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fswitch",{"title":1048,"slug":378,"path":1049,"order":90,"children":1050},"Process","en\u002Fdocs\u002Flogic-blocks\u002Fprocess",[1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143],{"title":382,"slug":383,"path":1052,"order":78,"template":334,"translation_key":385},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fbinary_limiter",{"title":387,"slug":388,"path":1054,"order":78,"template":334,"translation_key":390},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fboolean_to_string",{"title":392,"slug":393,"path":1056,"order":78,"template":334,"translation_key":395},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fclimate_regulator",{"title":397,"slug":398,"path":1058,"order":78,"template":334,"translation_key":400},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fclimate_regulator_hub",{"title":402,"slug":403,"path":1060,"order":78,"template":334,"translation_key":405},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fdelay",{"title":407,"slug":408,"path":1062,"order":78,"template":334,"translation_key":410},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fdelayed_pulse",{"title":412,"slug":413,"path":1064,"order":78,"template":334,"translation_key":415},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fdoor_window_monitor",{"title":417,"slug":418,"path":1066,"order":78,"template":334,"translation_key":420},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fedge_detector",{"title":422,"slug":423,"path":1068,"order":78,"template":334,"translation_key":425},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fhttp_request",{"title":427,"slug":428,"path":1070,"order":78,"template":334,"translation_key":430},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fhysteresis",{"title":432,"slug":433,"path":1072,"order":78,"template":334,"translation_key":435},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Firrigation",{"title":437,"slug":438,"path":1074,"order":78,"template":334,"translation_key":440},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fjson_get_boolean",{"title":442,"slug":443,"path":1076,"order":78,"template":334,"translation_key":445},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fjson_get_number",{"title":447,"slug":448,"path":1078,"order":78,"template":334,"translation_key":450},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fjson_get_string",{"title":452,"slug":453,"path":1080,"order":78,"template":334,"translation_key":455},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flevel_to_pulse",{"title":457,"slug":458,"path":1082,"order":78,"template":334,"translation_key":460},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flogic_and",{"title":462,"slug":463,"path":1084,"order":78,"template":334,"translation_key":465},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flogic_not",{"title":467,"slug":468,"path":1086,"order":78,"template":334,"translation_key":470},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flogic_or",{"title":472,"slug":473,"path":1088,"order":78,"template":334,"translation_key":475},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_abs",{"title":477,"slug":478,"path":1090,"order":78,"template":334,"translation_key":480},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_add",{"title":482,"slug":483,"path":1092,"order":78,"template":334,"translation_key":485},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_average",{"title":487,"slug":488,"path":1094,"order":78,"template":334,"translation_key":490},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_ceil",{"title":492,"slug":493,"path":1096,"order":78,"template":334,"translation_key":495},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_divide",{"title":497,"slug":498,"path":1098,"order":78,"template":334,"translation_key":500},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_floor",{"title":502,"slug":503,"path":1100,"order":78,"template":334,"translation_key":505},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_max",{"title":507,"slug":508,"path":1102,"order":78,"template":334,"translation_key":510},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_min",{"title":512,"slug":513,"path":1104,"order":78,"template":334,"translation_key":515},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_modulo",{"title":517,"slug":518,"path":1106,"order":78,"template":334,"translation_key":520},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_multiply",{"title":522,"slug":523,"path":1108,"order":78,"template":334,"translation_key":525},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_random",{"title":527,"slug":528,"path":1110,"order":78,"template":334,"translation_key":530},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_round",{"title":532,"slug":533,"path":1112,"order":78,"template":334,"translation_key":535},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_subtract",{"title":537,"slug":538,"path":1114,"order":78,"template":334,"translation_key":540},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmotor_axis",{"title":542,"slug":543,"path":1116,"order":78,"template":334,"translation_key":545},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmoving_average",{"title":547,"slug":548,"path":1118,"order":78,"template":334,"translation_key":550},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumber_to_string",{"title":552,"slug":553,"path":1120,"order":78,"template":334,"translation_key":555},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumeric_latch",{"title":557,"slug":558,"path":1122,"order":78,"template":334,"translation_key":560},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumeric_predicate",{"title":562,"slug":563,"path":1124,"order":78,"template":334,"translation_key":565},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumeric_throttle",{"title":567,"slug":568,"path":1126,"order":78,"template":334,"translation_key":570},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpubsub",{"title":572,"slug":573,"path":1128,"order":78,"template":334,"translation_key":575},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpulse_counter",{"title":577,"slug":578,"path":1130,"order":78,"template":334,"translation_key":580},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpulse_gate",{"title":582,"slug":583,"path":1132,"order":78,"template":334,"translation_key":585},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpulse_throttle",{"title":587,"slug":588,"path":1134,"order":78,"template":334,"translation_key":590},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fsequencer",{"title":592,"slug":593,"path":1136,"order":78,"template":334,"translation_key":595},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fshading",{"title":597,"slug":598,"path":1138,"order":78,"template":334,"translation_key":600},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fstring_format",{"title":602,"slug":603,"path":1140,"order":78,"template":334,"translation_key":605},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fstring_latch",{"title":607,"slug":608,"path":1142,"order":78,"template":334,"translation_key":610},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Ftoggle",{"title":612,"slug":613,"path":1144,"order":78,"template":334,"translation_key":615},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fvariable_delayed_pulse",{"title":1146,"slug":618,"path":1147,"order":96,"children":1148},"Output","en\u002Fdocs\u002Flogic-blocks\u002Foutput",[1149,1151],{"title":622,"slug":623,"path":1150,"order":78,"template":334,"translation_key":625},"en\u002Fdocs\u002Flogic-blocks\u002Foutput\u002Foperation_mode_controller",{"title":627,"slug":628,"path":1152,"order":78,"template":334,"translation_key":630},"en\u002Fdocs\u002Flogic-blocks\u002Foutput\u002Frelay",{"title":1154,"slug":633,"path":1155,"order":118,"children":1156},"Volang Programming Language","en\u002Fdocs\u002Fvolang",[1157,1160],{"title":1158,"slug":638,"path":1159,"order":84},"The Volang Language","en\u002Fdocs\u002Fvolang\u002Flanguage",{"title":1161,"slug":642,"path":1162,"order":90,"template":644},"Standard Library","en\u002Fdocs\u002Fvolang\u002Fstdlib",{"title":1164,"slug":647,"path":1165,"order":649,"children":1166},"Software & Tools","en\u002Fdocs\u002Fsoftware",[1167,1170],{"title":1168,"slug":653,"path":1169,"order":84},"Voldeno Studio - Installation and Walkthrough","en\u002Fdocs\u002Fsoftware\u002Fstudio",{"title":1171,"slug":657,"path":1172,"order":90},"Voldeno Studio - Schedules","en\u002Fdocs\u002Fsoftware\u002Fschedules",{"title":1174,"slug":1175,"path":1176,"order":663,"children":1177},"How-to Guides & Recipes","how-to","en\u002Fdocs\u002Fhow-to",[1178,1182,1186,1190],{"title":1179,"slug":1180,"path":1181,"order":84},"What is a smart home and how does it work?","what-is-a-smart-home","en\u002Fdocs\u002Fhow-to\u002Fwhat-is-a-smart-home",{"title":1183,"slug":1184,"path":1185,"order":90},"How to choose a smart home system: a practical guide","how-to-choose-a-smart-home-system","en\u002Fdocs\u002Fhow-to\u002Fhow-to-choose-a-smart-home-system",{"title":1187,"slug":1188,"path":1189,"order":96},"How much does a smart home cost? Three Voldeno installation variants with modules and prices","how-much-does-a-smart-home-cost","en\u002Fdocs\u002Fhow-to\u002Fhow-much-does-a-smart-home-cost",{"title":1191,"slug":1192,"path":1193,"order":106},"7 most common smart home design mistakes","smart-home-design-mistakes","en\u002Fdocs\u002Fhow-to\u002Fsmart-home-design-mistakes",{"title":1195,"slug":1196,"path":1197,"order":685,"children":1198},"Troubleshooting & Diagnostics","troubleshooting","en\u002Fdocs\u002Ftroubleshooting",[1199],{"title":1200,"slug":689,"path":1201,"order":84},"Bus Communication Troubleshooting","en\u002Fdocs\u002Ftroubleshooting\u002Fbus-communication",{"title":1203,"slug":693,"path":1204,"order":695},"Frequently Asked Questions","en\u002Fdocs\u002Ffaq",{"pl":1206,"de":1219,"en":1232},{"bloki-logiczne":1207,"architektura-systemu":1208,"bloki-logiczne\u002Finput":1209,"bloki-logiczne\u002Foutput":1210,"bloki-logiczne\u002Fprocess":1211,"pierwsze-kroki":1212,"oprogramowanie":1213,"moduly":1214,"volang":1215,"poradniki":1216,"diagnostyka":1217,"okablowanie":1218},"bloki-logiczne\u002Fprzeglad","architektura-systemu\u002Fbezpieczenstwo","bloki-logiczne\u002Finput\u002Fbinary_input","bloki-logiczne\u002Foutput\u002Foperation_mode_controller","bloki-logiczne\u002Fprocess\u002Fbinary_limiter","pierwsze-kroki\u002Fpojecia","oprogramowanie\u002Fstudio","moduly\u002Fokablowanie-hub","volang\u002Fjezyk","poradniki\u002Fczym-jest-smart-home","diagnostyka\u002Fkomunikacja-magistrali","okablowanie\u002Ftopologia-magistrali",{"logikbausteine":1220,"logikbausteine\u002Foutput":1221,"ratgeber":1222,"verkabelung":1223,"fehlerbehebung":1224,"erste-schritte":1225,"logikbausteine\u002Fprocess":1226,"module":1227,"logikbausteine\u002Finput":1228,"volang":1229,"software":1230,"systemarchitektur":1231},"logikbausteine\u002Fuebersicht","logikbausteine\u002Foutput\u002Foperation_mode_controller","ratgeber\u002Fwas-ist-ein-smart-home","verkabelung\u002Fbus-topology","fehlerbehebung\u002Fbus-communication","erste-schritte\u002Fconcepts","logikbausteine\u002Fprocess\u002Fbinary_limiter","module\u002Fhub-wiring","logikbausteine\u002Finput\u002Fbinary_input","volang\u002Flanguage","software\u002Fstudio","systemarchitektur\u002Fsecurity",{"logic-blocks\u002Fprocess":1233,"wiring":1234,"logic-blocks\u002Foutput":1235,"volang":1229,"how-to":1236,"troubleshooting":1237,"modules":1238,"getting-started":1239,"software":1230,"logic-blocks\u002Finput":1240,"system-architecture":1241,"logic-blocks":1242},"logic-blocks\u002Fprocess\u002Fbinary_limiter","wiring\u002Fbus-topology","logic-blocks\u002Foutput\u002Foperation_mode_controller","how-to\u002Fwhat-is-a-smart-home","troubleshooting\u002Fbus-communication","modules\u002Fhub-wiring","getting-started\u002Fconcepts","logic-blocks\u002Finput\u002Fbinary_input","system-architecture\u002Fsecurity","logic-blocks\u002Foverview",{"enabled":64,"navigation":1244},{"pl":1245,"en":1282,"de":1308},[1246,1252,1258,1264,1270,1276],{"title":1247,"slug":1248,"path":1249,"order":78,"date":1250,"translation_key":1251},"Inteligentny dom to nie gadżet: policzalne oszczędności, bezpieczeństwo i wartość nieruchomości","inteligentny-dom-to-nie-gadzet","pl\u002Fblog\u002Finteligentny-dom-to-nie-gadzet","2026-07-03","2026_07_03_inteligentny_dom_to_nie_gadzet",{"title":1253,"slug":1254,"path":1255,"order":78,"date":1256,"translation_key":1257},"Przełączanie w zerze napięcia: jak moduły I\u002FO i RELAY wydłużają życie styków przekaźników","przelaczanie-w-zerze-napiecia-moduly-io-i-relay","pl\u002Fblog\u002Fprzelaczanie-w-zerze-napiecia-moduly-io-i-relay","2026-06-11","2026_06_11_przelaczanie_w_zerze_napiecia",{"title":1259,"slug":1260,"path":1261,"order":78,"date":1262,"translation_key":1263},"System Voldeno napędził demo fabryki Fischertechnik na Google Cloud Next '26","voldeno-at-google-cloud-next-26","pl\u002Fblog\u002Fvoldeno-at-google-cloud-next-26","2026-04-28","2026_04_28_voldeno_at_google_cloud_next_26",{"title":1265,"slug":1266,"path":1267,"order":78,"date":1268,"translation_key":1269},"Jesteśmy gotowi! Setki modułów Voldeno przygotowanych do wdrożenia w inteligentnych domach.","jestesmy-gotowi-setki-modulow-voldeno-przygotowanych-do-wdrozenia-w-inteligentnych-domach","pl\u002Fblog\u002Fjestesmy-gotowi-setki-modulow-voldeno-przygotowanych-do-wdrozenia-w-inteligentnych-domach","2025-08-17","2025_08_17_we_are_ready",{"title":1271,"slug":1272,"path":1273,"order":78,"date":1274,"translation_key":1275},"Nowy czujnik temperatury Voldeno 1-Wire - kompaktowy, niezawodny i stworzony do dużych instalacji","nowy-czujnik-temperatury-1-wire-voldeno-kompaktowy-niezawodny-i-zaprojektowany-do-instalacji-na-duza-skale","pl\u002Fblog\u002Fnowy-czujnik-temperatury-1-wire-voldeno-kompaktowy-niezawodny-i-zaprojektowany-do-instalacji-na-duza-skale","2025-04-25","2025_04_25_new_voldeno_1wire_temperature_sensor",{"title":1277,"slug":1278,"path":1279,"order":78,"date":1280,"translation_key":1281},"Odkryj przyszłość inteligentnych domów z Voldeno","odkryj-przyszlosc-inteligentnych-domow-z-voldeno","pl\u002Fblog\u002Fodkryj-przyszlosc-inteligentnych-domow-z-voldeno","2024-10-18","2024_10_18_future_of_smart_homes",[1283,1288,1293,1296,1300,1304],{"title":1284,"slug":1285,"path":1286,"order":78,"date":1250,"translation_key":1287},"A smart home is not a gadget: measurable savings, security and property value","smart-home-is-not-a-gadget","en\u002Fblog\u002Fsmart-home-is-not-a-gadget","2026_07_03_smart_home_is_not_a_gadget",{"title":1289,"slug":1290,"path":1291,"order":78,"date":1256,"translation_key":1292},"Zero-crossing switching: how the I\u002FO and RELAY modules extend relay contact life","zero-crossing-switching-io-and-relay-modules","en\u002Fblog\u002Fzero-crossing-switching-io-and-relay-modules","2026_06_11_zero_crossing_switching",{"title":1294,"slug":1260,"path":1295,"order":78,"date":1262,"translation_key":1263},"Voldeno powered the Fischertechnik factory demo at Google Cloud Next '26","en\u002Fblog\u002Fvoldeno-at-google-cloud-next-26",{"title":1297,"slug":1298,"path":1299,"order":78,"date":1268,"translation_key":1269},"We are ready! Hundreds of Voldeno modules prepared for smart home deployment.","we-are-ready","en\u002Fblog\u002Fwe-are-ready",{"title":1301,"slug":1302,"path":1303,"order":78,"date":1274,"translation_key":1275},"New Voldeno 1-Wire Temperature Sensor - Compact, Reliable, and Built for Large-Scale Installations","new-voldeno-1-wire-temperature-sensor-compact-reliable-and-built-for-large-scale-installations","en\u002Fblog\u002Fnew-voldeno-1-wire-temperature-sensor-compact-reliable-and-built-for-large-scale-installations",{"title":1305,"slug":1306,"path":1307,"order":78,"date":1280,"translation_key":1281},"Discover the Future of Smart Homes with Voldeno","future_of_smart_homes","en\u002Fblog\u002Ffuture_of_smart_homes",[1309,1314,1319,1324,1329,1334],{"title":1310,"slug":1311,"path":1312,"order":78,"date":1250,"translation_key":1313},"Ein Smart Home ist kein Gadget: messbare Einsparungen, Sicherheit und Immobilienwert","smart-home-ist-kein-gadget","de\u002Fblog\u002Fsmart-home-ist-kein-gadget","2026_07_03_smart_home_ist_kein_gadget",{"title":1315,"slug":1316,"path":1317,"order":78,"date":1256,"translation_key":1318},"Schalten im Nulldurchgang: Wie die Module I\u002FO und RELAY die Lebensdauer der Relaiskontakte verlängern","schalten-im-nulldurchgang-io-und-relay-module","de\u002Fblog\u002Fschalten-im-nulldurchgang-io-und-relay-module","2026_06_11_schalten_im_nulldurchgang",{"title":1320,"slug":1321,"path":1322,"order":78,"date":1262,"translation_key":1323},"Voldeno steuerte die Fischertechnik-Fabrikdemo auf der Google Cloud Next '26","fischertechnik-fabrikdemo-google-cloud-next-26","de\u002Fblog\u002Ffischertechnik-fabrikdemo-google-cloud-next-26","2026_04_28_voldeno_bei_google_cloud_next_26",{"title":1325,"slug":1326,"path":1327,"order":78,"date":1268,"translation_key":1328},"Wir sind bereit! Hunderte Voldeno-Module für den Einsatz im Smart Home vorbereitet.","wir-sind-bereit","de\u002Fblog\u002Fwir-sind-bereit","2025_08_17_wir_sind_bereit",{"title":1330,"slug":1331,"path":1332,"order":78,"date":1274,"translation_key":1333},"Neuer Voldeno 1-Wire Temperatursensor: kompakt, zuverlässig und für große Installationen gebaut","1-wire-temperatursensor-kompakt-zuverlaessig-fuer-grosse-installationen","de\u002Fblog\u002F1-wire-temperatursensor-kompakt-zuverlaessig-fuer-grosse-installationen","2025_04_25_neuer_voldeno_1wire_temperatursensor",{"title":1335,"slug":1336,"path":1337,"order":78,"date":1280,"translation_key":1338},"Entdecken Sie die Zukunft des Smart Home mit Voldeno","zukunft-des-smart-home","de\u002Fblog\u002Fzukunft-des-smart-home","2024_10_18_zukunft_smart_homes",{"map":1340,"xDefault":1341},{"pl":1341,"en":1342,"de":1343},"https:\u002F\u002Fvoldeno.com\u002Fpl\u002Fdocs\u002Fpierwsze-kroki\u002Fvolang-i-volangvm","https:\u002F\u002Fvoldeno.com\u002Fen\u002Fdocs\u002Fgetting-started\u002Fvolang-and-volangvm","https:\u002F\u002Fvoldeno.com\u002Fde\u002Fdocs\u002Ferste-schritte\u002Fvolang-and-volangvm",{"slug":265,"title":264,"description":1345,"tags":1346,"content_html":1351,"headings":1352,"order":106,"extra":1391},"Was 'Logik' in einem Smart Home wirklich bedeutet, warum man sie nicht vollständig zusammenklicken kann, warum Voldeno eine eigene Sprache statt Python oder JavaScript gewählt hat und was Ihnen die Ausführung auf einer dedizierten virtuellen Maschine tatsächlich bringt.",[1347,633,1348,1349,1350],"erste schritte","volangvm","programmierung","logik","\u003Ch1 id=\"volang-und-volangvm-warum-ein-smart-home-eine-eigene-automatisierungssprache-braucht\">\u003Ca href=\"#volang-und-volangvm-warum-ein-smart-home-eine-eigene-automatisierungssprache-braucht\" class=\"anchor\">#\u003C\u002Fa> Volang und VolangVM: warum ein Smart Home eine eigene Automatisierungssprache braucht\u003C\u002Fh1>\n\u003Cp>Jedes Smart Home hat zwei Ebenen. Die erste ist die physische Hardware: Verteilungsmodule, Sensoren, Taster, Rollladenantriebe, Wärme- und Kältequellen. Die zweite ist die Logik, also die Regeln, die entscheiden, was geschehen soll, wenn ein Eingang seinen Zustand ändert. Ein Tastendruck soll ein Licht einschalten. Das Überschreiten einer Temperaturschwelle soll die Kühlung starten. Bewegung zu bestimmten Zeiten soll den Flur beleuchten, aber nur, wenn es draußen dunkel ist.\u003C\u002Fp>\n\u003Cp>Die meisten Nutzer sehen das Voldeno-System von der ersten Ebene aus: die Module \u003Ca href=\"\u002Fde\u002Fprodukte\u002Fhub\">HUB\u003C\u002Fa>, \u003Ca href=\"\u002Fde\u002Fprodukte\u002Fio\">I\u002FO\u003C\u002Fa>, \u003Ca href=\"\u002Fde\u002Fprodukte\u002Frelay\">RELAY\u003C\u002Fa>, \u003Ca href=\"\u002Fde\u002Fprodukte\u002F1wire\">1-WIRE\u003C\u002Fa> und \u003Ca href=\"\u002Fde\u002Fprodukte\u002Fanalog-input\">ANALOG INPUT\u003C\u002Fa> auf einer Hutschiene, alle über den Voldeno Bus verbunden. Die zweite Ebene, die Logik, läuft darunter und ist das, was &quot;ein Satz Module&quot; von &quot;einem System, das genau das tut, was ich will&quot; unterscheidet.\u003C\u002Fp>\n\u003Cp>Dieser Artikel erklärt, wie diese zweite Ebene bei Voldeno organisiert ist: was \u003Ca href=\"\u002Fde\u002Fdocs\u002Fvolang\u002Flanguage\">Volang\u003C\u002Fa> ist, was VolangVM ist, warum wir eine eigene Sprache gebaut haben, statt eine verbreitete wiederzuverwenden, und was das für die Menschen bedeutet, die sie tatsächlich nutzen. Der Text ist für Leserinnen und Leser mit wenig Programmiererfahrung geschrieben, deshalb erklären wir die wichtigsten Konzepte unterwegs.\u003C\u002Fp>\n\u003Ch2 id=\"was-logik-in-einem-smart-home-tatsachlich-bedeutet\">\u003Ca href=\"#was-logik-in-einem-smart-home-tatsachlich-bedeutet\" class=\"anchor\">#\u003C\u002Fa> Was \"Logik\" in einem Smart Home tatsächlich bedeutet\u003C\u002Fh2>\n\u003Cp>Logik sind einfach \u003Cstrong>Regeln\u003C\u002Fstrong>. &quot;Wenn A, dann tue B&quot;. Mal eine Bedingung, mal sieben, mal etwas mit Zeitbezug (nach zwei Minuten), mit einem Zähler, mit Hysterese oder mit einer Abhängigkeit von der Tageszeit.\u003C\u002Fp>\n\u003Cp>Die einfachste Logik sind zwei Sätze in einfacher Sprache: &quot;wenn jemand diese Taste drückt, schalte dieses Licht ein&quot;. Diese Regel behalten Sie im Kopf und richten sie in der App mit einem einzigen Zug ein. Komplexere Logik ist eine Kette von Regeln, die sich gegenseitig beeinflussen. Der Sollwert hängt vom Zeitplan ab, der Zeitplan vom Betriebsmodus, der Betriebsmodus von der Anwesenheit, die Anwesenheit von einigen Sensoren und dem letzten Login in der App. Solche Dinge werden sehr schwer zu pflegen, wenn sie nur als lose Liste von &quot;Szenen&quot; und &quot;Automatisierungen&quot; gespeichert sind.\u003C\u002Fp>\n\u003Cp>Logik muss außerdem \u003Cstrong>irgendwo laufen\u003C\u002Fstrong>. Bei Voldeno ist dieses Irgendwo der Hub, und in ausgewählten Fällen auch die Erweiterungsmodule. Die Frage lautet: In welchem Format soll diese Logik gespeichert sein, damit der Hub genau weiß, was zu tun ist.\u003C\u002Fp>\n\u003Ch2 id=\"kann-man-sich-das-nicht-einfach-zusammenklicken\">\u003Ca href=\"#kann-man-sich-das-nicht-einfach-zusammenklicken\" class=\"anchor\">#\u003C\u002Fa> Kann man sich das nicht einfach zusammenklicken?\u003C\u002Fh2>\n\u003Cp>Kann man. Für die meisten alltäglichen Szenarien wird es genau so gemacht. In \u003Ca href=\"\u002Fde\u002Fdocs\u002Fsoftware\u002Fstudio\">Voldeno Studio\u003C\u002Fa> setzen Sie die gesamte Logik aus fertigen Bausteinen zusammen. Diese Bausteine nennen wir \u003Cstrong>Logikbausteine\u003C\u002Fstrong>. Es gibt Schalter, Zeitpläne, einen Klimaregler, Szenen, Zähler, Integrationsbrücken. Sie verbinden sie mit Leitungen: einen Ausgang eines Bausteins mit einem Eingang eines anderen. Ein typisches Hausautomationsprojekt lässt sich so aufbauen, ohne eine einzige Zeile Code zu schreiben.\u003C\u002Fp>\n\u003Cp>Dieser Ansatz hat echte Grenzen. Die eingebauten Bausteine sind eine endliche Liste. Sie tun genau das, wofür sie entworfen wurden. Wenn Sie zum Beispiel:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Impulse eines Energiezählers zählen und bei jeder vollen Kilowattstunde ein Ereignis an Ihre Cloud senden wollen,\u003C\u002Fli>\n\u003Cli>eine ungewöhnliche Garagentorsequenz umsetzen wollen, die der Hersteller nicht nativ unterstützt,\u003C\u002Fli>\n\u003Cli>einen eigenen Regelalgorithmus für eine Wärmepumpe mit Modi und auf eine bestimmte Anlage abgestimmter Hysterese schreiben wollen,\u003C\u002Fli>\n\u003Cli>eine Integration über ein Protokoll aufbauen wollen, das noch nicht auf unserer Integrationsliste steht,\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>dann bringen Sie fertige Bausteine nicht ans Ziel. Sie müssen \u003Cstrong>genau beschreiben, was geschehen soll\u003C\u002Fstrong>, und zwar so, dass der Computer es wortwörtlich ausführt. Genau dafür ist eine Programmiersprache da.\u003C\u002Fp>\n\u003Ch2 id=\"warum-es-sprachen-fur-logik-gibt\">\u003Ca href=\"#warum-es-sprachen-fur-logik-gibt\" class=\"anchor\">#\u003C\u002Fa> Warum es \"Sprachen\" für Logik gibt\u003C\u002Fh2>\n\u003Cp>Eine Programmiersprache ist \u003Cstrong>eine sehr präzise Art, Regeln aufzuschreiben\u003C\u002Fstrong>. Ein Mensch schreibt Text, ein Compiler (ein Übersetzungsprogramm) prüft, ob der Text den vereinbarten Regeln folgt, und dann führt das Gerät diese Beschreibung wortwörtlich aus, Schritt für Schritt, millionenfach, ohne Interpretation dazwischen.\u003C\u002Fp>\n\u003Cp>Jedes ernsthafte Gebäudeautomationssystem hat seine eigene Art, Logik festzuhalten. KNX hat ETS und die Konfiguration von Gruppenadressen. Industrielle SPS haben die Sprachfamilie IEC 61131-3 (Kontaktplan, Funktionsbausteinsprache, Anweisungsliste, strukturierter Text). Home Assistant nutzt YAML und Python. Je mehr ein System kann, desto präziser muss die &quot;Sprache&quot; darin sein.\u003C\u002Fp>\n\u003Cp>Der Grund, warum man einer Form von Sprache nicht entkommt, ist einfach. \u003Cstrong>Auch Logikbausteine in einer grafischen Oberfläche sind eine Sprache.\u003C\u002Fstrong> Jeder Baustein ist eine verborgene Funktion. Jede Verbindung ist eine verborgene Codezeile. Der einzige Unterschied ist, wie sichtbar und wie flexibel diese &quot;Sprache&quot; ist. Visuelle Sprachen sind am Anfang leicht und werden mühsam, wenn die Logik wächst. Textbasierte sind am Anfang schwerer und weit haltbarer, sobald das Projekt groß wird.\u003C\u002Fp>\n\u003Ch2 id=\"warum-wir-keine-bestehende-sprache-wie-python-oder-javascript-genommen-haben\">\u003Ca href=\"#warum-wir-keine-bestehende-sprache-wie-python-oder-javascript-genommen-haben\" class=\"anchor\">#\u003C\u002Fa> Warum wir keine bestehende Sprache wie Python oder JavaScript genommen haben\u003C\u002Fh2>\n\u003Cp>Das war die erste Frage, die wir uns gestellt haben. Python und JavaScript sind überall. Lua ist in eingebetteten Geräten beliebt. Wir schätzen diese Sprachen und nutzen sie in anderen Teilen unseres Ökosystems (Backend-Werkzeuge, die Desktop-App). Für Logik, die auf einem Hutschienenmodul läuft, haben wir uns dennoch entschieden, etwas Eigenes zu bauen. Hier ist, warum.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Größe.\u003C\u002Fstrong> Der Hub hat begrenzten Speicher und eine eingebettete CPU, die Erweiterungsmodule noch weniger. Ein vollständiger Python-Interpreter belegt viele Megabyte RAM und schleppt ein riesiges Abhängigkeitsökosystem mit sich. Für unsere Module ist das unverhältnismäßig teuer. Volang ist so ausgelegt, dass es klein, sparsam und schnell startbereit ist.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Sicherheit.\u003C\u002Fstrong> Selbst geschriebene Logik darf niemals den Hub zum Absturz bringen oder andere Projekte auf demselben Gerät beeinträchtigen können. Das erfordert sehr präzise Grenzen dafür, welche Operationen erlaubt sind und wie lange. In einem universellen Python oder JavaScript ist das machbar, aber nur mit großem Aufwand und oft unvollständig. Eine enge, dedizierte Sprache erlaubt uns, diese Grenzen in den Entwurf selbst einzubacken, statt sie nachträglich anzuflanschen.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Vorhersagbare Ausführungszeit.\u003C\u002Fstrong> In einem System, das Heizung, Beleuchtung und ein Tor steuert, ist &quot;fast immer schnell&quot; keine ausreichend gute Eigenschaft. Wir wollten eine Sprache, in der derselbe Code immer ungefähr gleich lange läuft und im Hintergrund keine Zauberei betreibt (etwa Speicher zu zufälligen Zeitpunkten freizugeben, wie es die meisten universellen Laufzeitumgebungen tun). Volang hat keinen Garbage Collector, der die Skriptausführung zu einem unerwarteten Moment anhalten könnte.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Für Automatisierung gebaut.\u003C\u002Fstrong> In Volang ergibt Code wie \u003Ccode>output::set(&quot;relay_1&quot;, true)\u003C\u002Fcode> oder \u003Ccode>input::value()\u003C\u002Fcode> von der ersten Zeile an Sinn. Konzepte wie &quot;Eingang&quot;, &quot;Ausgang&quot;, &quot;Kanal&quot;, &quot;Baustein&quot; sind Teil der Standardbibliothek. In Python oder JavaScript müssten diese Ebenen obendrauf gebaut und gepflegt werden, und der Nutzer müsste sie trotzdem lernen.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Stabilität über die Zeit.\u003C\u002Fstrong> Wie sich Syntax und Standardbibliothek von Volang weiterentwickeln, entscheiden wir, nicht eine externe Community. In Python oder JavaScript verändern neue Sprachversionen regelmäßig bestehende Funktionen oder erklären sie für veraltet, sodass Projekte hin und wieder angepasst werden müssen. Bei Volang wollen wir, dass ein heute geschriebenes Skript in zwei und in zehn Jahren unverändert weiterläuft.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Was ist mit MicroPython?\u003C\u002Fstrong> Diese Frage kommt immer wieder, deshalb eine kurze Antwort. \u003Cstrong>MicroPython\u003C\u002Fstrong> und \u003Cstrong>CircuitPython\u003C\u002Fstrong> sind abgespeckte Python-Versionen für Mikrocontroller und in ihrer Klasse wirklich gut. Für unseren konkreten Einsatzzweck sind die Gründe, sie nicht zu wählen, genau die oben genannten, nur zugespitzt: Sie belegen weiterhin Hunderte KB Speicher, sie haben weiterhin einen Garbage Collector, der das Skript für unvorhersehbare Millisekunden anhält, und um eine sinnvolle Sandbox zu bauen, müssen Sie so viel von Python wegschneiden, dass am Ende ohnehin eine engere, eigene Sprache entsteht. &quot;Fast Python&quot; ist zudem eine Falle, weil Nutzer in Gewohnheiten verfallen, die plötzlich nicht mehr funktionieren.\u003C\u002Fp>\n\u003Cp>Das ist keine Haltung nach dem Motto &quot;aus Prinzip alles auf eigene Weise&quot;. Wir sind offen dafür, künftig weitere Sprachen einzubinden, wo es sinnvoll ist. Für die Ebene der Bausteinlogik selbst bietet eine enge, eigene Sprache das beste Verhältnis von Aufwand und Nutzen.\u003C\u002Fp>\n\u003Ch2 id=\"was-volangvm-ist\">\u003Ca href=\"#was-volangvm-ist\" class=\"anchor\">#\u003C\u002Fa> Was VolangVM ist\u003C\u002Fh2>\n\u003Cp>VM, kurz für \u003Cstrong>virtuelle Maschine\u003C\u002Fstrong>, klingt einschüchternd, ist in der Praxis aber einfach \u003Cstrong>ein kleines, spezialisiertes Programm\u003C\u002Fstrong>, das &quot;so tut, als wäre es&quot; ein einfacher Computer, und darauf Volang-Anweisungen ausführt.\u003C\u002Fp>\n\u003Cp>Wenn Sie ein Skript in Studio schreiben, passiert Folgendes:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Der Volang-Quelltext wird auf Syntax und Typen geprüft. Das ist der Schritt der \u003Cstrong>Kompilierung\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Wenn alles passt, wandelt der Compiler den Text in kompakte, binäre Anweisungen um, den sogenannten \u003Cstrong>Bytecode\u003C\u002Fstrong>. Bytecode sieht für einen Menschen wie eine Kette von Zahlen aus, ist für eine Maschine aber schnell zu lesen.\u003C\u002Fli>\n\u003Cli>Der Bytecode landet auf dem Hub (und mit der Zeit auf ausgewählten Erweiterungsmodulen) und wird von VolangVM geladen.\u003C\u002Fli>\n\u003Cli>VolangVM arbeitet die Anweisungen eine nach der anderen ab. Sie liest Eingänge, wertet Bedingungen aus, setzt Ausgänge und ruft Funktionen der Standardbibliothek auf.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Zum Vergleich: Ohne VM müsste der Hub den Skripttext jedes Mal neu parsen, ihn validieren und in Aktionen übersetzen. Mit einer VM wird diese Arbeit einmal erledigt, und die Ausführung des Skripts auf dem Gerät läuft darauf hinaus, fertige Anweisungen zu lesen.\u003C\u002Fp>\n\u003Ch3 id=\"der-compiler-lebt-nicht-nur-in-studio\">\u003Ca href=\"#der-compiler-lebt-nicht-nur-in-studio\" class=\"anchor\">#\u003C\u002Fa> Der Compiler lebt nicht nur in Studio\u003C\u002Fh3>\n\u003Cp>Ein wichtiger und oft übersehener Punkt: \u003Cstrong>Derselbe Volang-Compiler steckt sowohl in Voldeno Studio als auch im Hub selbst.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Im typischen Ablauf öffnet ein Installateur ein Projekt in Studio auf einem Computer, bearbeitet das Skript, kompiliert es lokal, prüft es im Simulator und lädt den bereits kompilierten Bytecode auf den Hub. Das ist der schnellste und bequemste Weg, weil Studio Syntaxfehler und Warnungen sofort anzeigt.\u003C\u002Fp>\n\u003Cp>Der Hub verlangt jedoch nicht, dass der Code vorkompiliert ankommt. Er kann auch \u003Cstrong>rohen Volang-Text\u003C\u002Fstrong> annehmen und ihn vor der Ausführung selbst kompilieren. Syntaxprüfung, Typprüfung, Integritätsvalidierung, Bytecode-Erzeugung: All das kann der Hub eigenständig erledigen.\u003C\u002Fp>\n\u003Cp>Für uns als Systemdesigner ist das ein architektonisches Fundament. Studio und der Hub verwenden \u003Cstrong>denselben Compiler-Code und dieselbe VM\u003C\u002Fstrong>. Ein an einem Ort kompiliertes Skript verhält sich identisch, wenn es am anderen ausgeführt wird. Es gibt keinen &quot;Studio-Dialekt&quot; und keinen &quot;Hub-Dialekt&quot;. Das öffnet die Tür zu künftigen Szenarien, in denen Logik ohne Studio aktualisiert werden kann (etwa aus der Ferne über Voldeno Cloud oder programmgesteuert aus den Werkzeugen eines Integrators). Vorerst bleibt der primäre Weg das Bearbeiten und Kompilieren in Studio.\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F Kurzes Beispiel: prüfen, welcher Eingang sich geändert hat,\u003C\u002Fspan>\n\u003Cspan class=\"comment\">\u002F\u002F und den Ausgang \"relay_1\" entsprechend umschalten.\u003C\u002Fspan>\n\u003Cspan class=\"variable\">channel\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"stdlib\">input::channel\u003C\u002Fspan>()\n\u003Cspan class=\"variable\">value\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"stdlib\">input::value\u003C\u002Fspan>()\n\n\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">channel\u003C\u002Fspan> \u003Cspan class=\"operator\">==\u003C\u002Fspan> \u003Cspan class=\"string\">\"input\"\u003C\u002Fspan> \u003Cspan class=\"keyword\">and\u003C\u002Fspan> \u003Cspan class=\"variable\">value\u003C\u002Fspan>) {\n    \u003Cspan class=\"variable\">output\u003C\u002Fspan>::\u003Cspan class=\"function\">toggle\u003C\u002Fspan>(\u003Cspan class=\"string\">\"relay_1\"\u003C\u002Fspan>)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\n\u003Cp>Diese wenigen Zeilen Logik kompilieren zu ein paar Dutzend Byte Bytecode und werden von VolangVM jedes Mal ausgeführt, wenn sich der Eingang des Bausteins ändert.\u003C\u002Fp>\n\u003Ch2 id=\"was-volangvm-ihnen-tatsachlich-bringt\">\u003Ca href=\"#was-volangvm-ihnen-tatsachlich-bringt\" class=\"anchor\">#\u003C\u002Fa> Was VolangVM Ihnen tatsächlich bringt\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Sandbox, also Isolation.\u003C\u002Fstrong> Jedes Skript läuft in einer abgeschotteten Umgebung. Ein Laufzeitfehler in einem Baustein (etwa eine Division durch null) stoppt \u003Cstrong>nur dieses eine Skript\u003C\u002Fstrong>, nicht den ganzen Hub. Der Rest der Automatisierung arbeitet weiter: Lichter reagieren weiterhin, die Heizung regelt weiter, Zeitpläne feuern weiter.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Leistung auf kleiner Hardware.\u003C\u002Fstrong> Bytecode ist klein und schnell auszuführen. Die VM passt an Stellen, an denen ein vollständiger, universeller Interpreter keinen Platz hätte. Das öffnet die Tür, Logik nicht nur zentral auf dem Hub, sondern auch direkt auf Erweiterungsmodulen laufen zu lassen.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Identische Simulation in Voldeno Studio.\u003C\u002Fstrong> Das ist eine der wichtigsten Folgen der VM-Architektur. Dieselbe VolangVM, die auf dem Hub läuft, läuft auch in Studio auf dem Computer des Installateurs. Sie können das Skript &quot;trocken&quot; ausführen, es mit Testeingaben füttern und sein Verhalten beobachten, mit der Garantie, dass es sich auf dem echten Gerät identisch verhält. Es gibt kein &quot;läuft auf meinem Computer, aber nicht beim Kunden&quot;.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Portabilität.\u003C\u002Fstrong> Bytecode hängt nicht von der genauen CPU im jeweiligen Modul ab. Logik kann künftig auf neuer Hardware laufen, ohne Änderungen am Projektcode, solange VolangVM darauf läuft.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Verteilte Ausführung.\u003C\u002Fstrong> Ausgewählte Logikteile können nah an der Hardware laufen, auf dem Erweiterungsmodul selbst, statt zentral. Das senkt die Latenz und lässt kritische Reaktionen (etwa &quot;den Kontakt sofort öffnen, wenn der Strom überschritten wird&quot;) lokal ablaufen, selbst wenn der Bus gerade ausgelastet ist.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Updates, die sich leicht zurücknehmen lassen.\u003C\u002Fstrong> Skripte sind im Projekt versioniert. Das Hochladen einer neuen Version ersetzt keine Modul-Firmware, sondern nur den Inhalt der VM. Ein Notfall-Rollback auf eine frühere Version ist günstig und schnell.\u003C\u002Fp>\n\u003Ch2 id=\"die-volang-standardbibliothek-also-was-jedes-skript-ab-werk-bekommt\">\u003Ca href=\"#die-volang-standardbibliothek-also-was-jedes-skript-ab-werk-bekommt\" class=\"anchor\">#\u003C\u002Fa> Die Volang-Standardbibliothek, also was jedes Skript ab Werk bekommt\u003C\u002Fh2>\n\u003Cp>Die Sprache selbst ist nur die Hälfte des Puzzles. Die andere Hälfte ist die \u003Cstrong>Standardbibliothek\u003C\u002Fstrong>, eine Sammlung fertiger Funktionen, die jedes Skript sofort aufrufen kann, ohne Installation, ohne Code von anderswo zu kopieren, ohne Pakete aus dem Internet zu holen.\u003C\u002Fp>\n\u003Cp>Jede ernsthafte Programmiersprache hat eine Standardbibliothek. In Python sind das \u003Ccode>os\u003C\u002Fcode>, \u003Ccode>math\u003C\u002Fcode>, \u003Ccode>datetime\u003C\u002Fcode>, \u003Ccode>json\u003C\u002Fcode> und Hunderte mehr. In JavaScript sind es \u003Ccode>Math\u003C\u002Fcode>, \u003Ccode>JSON\u003C\u002Fcode>, \u003Ccode>Date\u003C\u002Fcode>, \u003Ccode>fetch\u003C\u002Fcode>. Der Grund ist einfach: Ohne Standardbibliothek müsste jeder Programmierer die Grundlagen von Grund auf schreiben. Das Multiplizieren von Zahlen ist Teil der Sprachsyntax, aber &quot;Quadratwurzel&quot;, &quot;aktuelle Uhrzeit&quot;, &quot;Text in Zahl umwandeln&quot; oder &quot;aufrunden&quot; sind Funktionen. Die Standardbibliothek beantwortet die Frage &quot;welche grundlegenden Dinge kann die Sprache bereits, sobald sie läuft&quot;.\u003C\u002Fp>\n\u003Cp>In Volang teilt sich die Standardbibliothek in einige Gruppen. Wir listen sie auf, damit konkret ist, worüber ein Skript verfügt:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Ein- und Ausgänge des Bausteins\u003C\u002Fstrong> (\u003Ccode>input::channel\u003C\u002Fcode>, \u003Ccode>input::value\u003C\u002Fcode>, \u003Ccode>input::get\u003C\u002Fcode>, \u003Ccode>output::set\u003C\u002Fcode>, \u003Ccode>output::toggle\u003C\u002Fcode>, ...). Das ist die Grundlage, denn der ganze Sinn von Volang ist es, auf ein Ereignis an einem Eingang zu reagieren und einen Ausgang zu setzen. Ohne diese Funktionen hat ein Skript keine Möglichkeit, mit dem Rest der Installation zu sprechen.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zustand und Konfiguration des Bausteins\u003C\u002Fstrong> (\u003Ccode>state::set\u003C\u002Fcode>, \u003Ccode>state::get\u003C\u002Fcode>, \u003Ccode>config::get\u003C\u002Fcode>, ...). Damit merkt sich ein Baustein Dinge zwischen Ereignissen (etwa einen Impulszähler) und liest die in Studio gesetzten Parameter.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zeit und Terminierung\u003C\u002Fstrong> (\u003Ccode>time::now\u003C\u002Fcode>, Callbacks). Ohne diese lässt sich keine Regel &quot;5 Minuten einschalten, dann aus&quot; schreiben.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Arbeit mit Text, Zahlen, Arrays und Maps\u003C\u002Fstrong> (String-Operationen, Mathematik, Array, Map). Alltagswerkzeuge: zählen, sortieren, Text aufteilen, einen Bereich prüfen.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>JSON und Base64.\u003C\u002Fstrong> Standardformate, die Sie immer dann brauchen, wenn Logik mit der Außenwelt sprechen muss.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>HTTP und Netzwerk\u003C\u002Fstrong> in ausgewählten, kontrollierten Formen. Das ist der einzige Weg, über den ein Skript über das Gerät hinausreicht. Es gibt kein &quot;importiere irgendetwas aus dem Internet&quot;. Es gibt &quot;nutze diese bestimmten Funktionen, die die VM kennt und versteht&quot;.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Kryptografie und Hilfsoperationen.\u003C\u002Fstrong> Signaturen, Hashes, Kodierungen, gerade genug, um eine sichere Integration zu bauen (zum Beispiel ein JWT für Google Cloud, wie in unserer Demo auf der Google Cloud Next).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Asynchrone Operationen.\u003C\u002Fstrong> Damit planen Sie eine Aktion für später, ohne die Ausführung zu blockieren.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>In Volang spielt die Standardbibliothek eine weitere Rolle, die &quot;große&quot; Sprachen nicht haben: \u003Cstrong>Sie ist zugleich die Sicherheitsgrenze.\u003C\u002Fstrong> Da Sie kein Paket installieren und kein beliebiges Modul importieren können, muss alles, was ein Skript an der Außenwelt tun kann, in der Standardbibliothek liegen. Jede Funktion darin wurde bewusst so entworfen, dass sie aus einer Sandbox heraus aufgerufen werden kann. Nichts sickert durch &quot;Seitentüren&quot;, weil es keine Seitentüren gibt.\u003C\u002Fp>\n\u003Cp>Das verändert, wie man die Sprache lernt. Bei einer großen Sprache lernt man nach dem Muster &quot;ich finde eine Bibliothek, die das kann&quot;. Bei Volang lernt man nach dem Muster &quot;ich prüfe, welche Funktion der Standardbibliothek das tut&quot;. Die Liste ist endlich, dafür ist alles darin stabil, schnell und sicher.\u003C\u002Fp>\n\u003Cp>Die vollständige Funktionsliste finden Sie in \u003Ca href=\"\u002Fde\u002Fdocs\u002Fvolang\u002Fstdlib\">der Volang-Standardbibliothek\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"die-grenzen-von-volang-also-was-es-nicht-tut\">\u003Ca href=\"#die-grenzen-von-volang-also-was-es-nicht-tut\" class=\"anchor\">#\u003C\u002Fa> Die Grenzen von Volang, also was es nicht tut\u003C\u002Fh2>\n\u003Cp>Volang ist bewusst eng gehalten. Aufzulisten, was es \u003Cstrong>nicht hat\u003C\u002Fstrong>, ist hier ehrlicher, als alles aufzuzählen, was es kann.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Kein freier Internetzugang.\u003C\u002Fstrong> Netzwerkkommunikation läuft über bestimmte, vorbereitete Funktionen der Standardbibliothek (etwa HTTP-Aufrufe, einen MQTT-Client, das Veröffentlichen in Google Pub\u002FSub). Es gibt kein \u003Ccode>import requests\u003C\u002Fcode> in einem Skript.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Keine Installation von Drittanbieter-Bibliotheken.\u003C\u002Fstrong> Alles, was Sie aufrufen können, stammt entweder aus der Volang-Standardbibliothek oder aus den von Voldeno ausgelieferten Logikbausteinen.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Kein Dateizugriff.\u003C\u002Fstrong> Ein Skript liest oder schreibt keine Dateien auf der Festplatte des Hub. Der Zustand lebt in Bausteinvariablen und in Ein-\u002FAusgängen.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Keine Systemoperationen.\u003C\u002Fstrong> Sie können kein externes Programm aufrufen, keinen Socket &quot;von Hand&quot; öffnen, keinen Container starten. Das ist Absicht, und die Sicherheit des Systems beruht darauf.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Eine enge Syntax.\u003C\u002Fstrong> Es gibt nur die \u003Ccode>while\u003C\u002Fcode>-Schleife, kein \u003Ccode>for\u003C\u002Fcode>. Globale Variablen sind innerhalb von Funktionen nicht sichtbar, Argumente müssen explizit übergeben werden. Die Liste der Schlüsselwörter ist kurz.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Für einen professionellen Programmierer ist die Liste der Einschränkungen lang. Das ist so gewollt. Volang soll nicht &quot;noch eine universelle Sprache&quot; sein. Es soll der kürzeste Weg von einer Automatisierungsidee zu einem funktionierenden, sicheren und vorhersagbaren Skript im Hub sein.\u003C\u002Fp>\n\u003Ch2 id=\"risiken-die-man-kennen-sollte\">\u003Ca href=\"#risiken-die-man-kennen-sollte\" class=\"anchor\">#\u003C\u002Fa> Risiken, die man kennen sollte\u003C\u002Fh2>\n\u003Cp>Eigene Logik zu schreiben ist Macht, und Macht hat Folgen. Ein paar Dinge, die man im Blick behalten sollte.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Schlechte Hardwaresteuerung.\u003C\u002Fstrong> Ein Skript, das alle 200 ms die Heizung eines Boilers umschaltet, zerstört das Schütz. Ein Skript, das versucht, Rollläden gleichzeitig zu öffnen und zu schließen, löst den Thermoschutz des Motors aus. VolangVM weiß nicht, was physisch am Kontakt auf der anderen Seite angeschlossen ist. Das liegt in der Verantwortung des Logikdesigners.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Schleifen, die nie enden.\u003C\u002Fstrong> Eine \u003Ccode>while\u003C\u002Fcode>-Schleife mit einer Bedingung, die nie falsch wird, blockiert die Skriptausführung im Baustein. Da das Skript nie normal endet, reagiert es auch nicht auf weitere Eingangsereignisse, und der Baustein stellt seine Arbeit ein. Wenn Sie also ein \u003Ccode>while\u003C\u002Fcode> schreiben, stützen Sie die Bedingung auf einen Zähler oder einen Eingangswert und bauen Sie stets etwas in die Schleife ein, das ihn verändert. Oder fügen Sie ein \u003Ccode>break\u003C\u002Fcode> hinzu, das an eine Rückfallbedingung gekoppelt ist. Volang hat bewusst kein \u003Ccode>for\u003C\u002Fcode>, deshalb liegt die Verantwortung für das Beenden der Schleife beim Skriptautor.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Logik, die &quot;trocken&quot; Sinn ergibt, aber nicht in der physischen Realität.\u003C\u002Fstrong> Der Studio-Simulator prüft, ob sich das Skript korrekt verhält, aber nicht, ob sich die Rollläden im Wohnzimmer um 14:00 tatsächlich öffnen können, wenn die Sonne voll steht und das Fenster auf Kippstellung ist und sich am Antrieb verhaken könnte. Einen realen Test an der echten Anlage können Sie nicht überspringen.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Komplexität, die schneller wächst als die Dokumentation.\u003C\u002Fstrong> Es ist leicht, eine weitere Bedingung, eine weitere Variable, eine weitere Abhängigkeit hinzuzufügen. Es ist schwerer, in einem Jahr zu dieser Datei zurückzukehren und zu verstehen, warum. Wir empfehlen, Logik in kleine Bausteine aufzuteilen und überall dort Kommentare zu ergänzen, wo der Grund für eine Entscheidung nicht schon aus dem Code selbst hervorgeht.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Updates, die das Verhalten still verändern.\u003C\u002Fstrong> Volang als Sprache und die Standardbibliothek sind stabil, aber das Automatisierungsprojekt entwickelt sich weiter. Jede Änderung an einem Skript sollte in Studio mit Simulation laufen, bevor sie auf einen produktiven Hub gelangt.\u003C\u002Fp>\n\u003Cp>Diese Risiken sind real, aber auch normal für jedes programmierbare Automatisierungssystem. Deshalb halten wir an drei Grundsätzen fest: Ein Skript läuft in einer Sandbox, dasselbe Skript kann in Studio ausgeführt werden, bevor es auf einen Hub geht, und die vorherige Version lässt sich jederzeit wiederherstellen.\u003C\u002Fp>\n\u003Ch2 id=\"logikbausteine-die-ebene-uber-volang\">\u003Ca href=\"#logikbausteine-die-ebene-uber-volang\" class=\"anchor\">#\u003C\u002Fa> Logikbausteine, die Ebene über Volang\u003C\u002Fh2>\n\u003Cp>Ein praktischer Hinweis zum Abschluss. Die meisten Nutzer und Installateure werden nie eine einzige Zeile Volang schreiben. Für sie kommt Logik aus fertigen \u003Cstrong>Logikbausteinen\u003C\u002Fstrong> (Schalter, Klimaregler, Zeitpläne, Szenen). Studio verdrahtet sie visuell und der Hub führt sie aus. Jeder dieser Bausteine ist unter der Haube kompiliertes Volang, aus Sicht des Nutzers sieht er aber aus wie ein Baustein mit Eingangs- und Ausgangsanschlüssen.\u003C\u002Fp>\n\u003Cp>Volang kommt ins Spiel, wenn:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Sie einen eigenen Baustein hinzufügen wollen, der etwas tut, das die Bibliothek nicht hat,\u003C\u002Fli>\n\u003Cli>Sie eine Integration mit einem externen System bauen,\u003C\u002Fli>\n\u003Cli>Sie eine ungewöhnliche Automatisierung für einen bestimmten Kunden schreiben,\u003C\u002Fli>\n\u003Cli>oder Sie als Installateur\u002FIntegrator über viele Anlagen hinweg Ihre eigenen &quot;Hausbausteine&quot; pflegen.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>In diesen Fällen ist das Schreiben in Volang schlicht schneller und über die Zeit haltbarer, als viele eingebaute Bausteine nebeneinander zusammenzukleben.\u003C\u002Fp>\n\u003Ch2 id=\"wie-geht-es-weiter\">\u003Ca href=\"#wie-geht-es-weiter\" class=\"anchor\">#\u003C\u002Fa> Wie geht es weiter\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>Die vollständige Sprachreferenz: \u003Ca href=\"\u002Fde\u002Fdocs\u002Fvolang\u002Flanguage\">Volang\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Funktionen und Module, die in Skripten verfügbar sind: \u003Ca href=\"\u002Fde\u002Fdocs\u002Fvolang\u002Fstdlib\">Volang-Standardbibliothek\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fde\u002Fdocs\u002Fsoftware\u002Fstudio\">Voldeno Studio\u003C\u002Fa> ist ein kostenloser Download, mit den Werkzeugen zum Bearbeiten von Bausteinen, Kompilieren und Simulieren. Starten Sie auf der \u003Ca href=\"\u002Fde\u002Fdownloads\">Downloadseite\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Möchten Sie eigene Bausteine für Ihre Kunden schreiben oder eine Integration mit einem bestimmten externen System aufbauen? \u003Ca href=\"\u002Fde\u002Fkontakt\">Nehmen Sie Kontakt auf\u003C\u002Fa>. Für Integratoren und Partner: \u003Ca href=\"\u002Fde\u002Ffuer-fachbetriebe\">Für Profis\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n",[1353,1355,1358,1361,1364,1367,1370,1373,1376,1379,1382,1385,1388],{"level":84,"text":264,"id":1354},"volang-und-volangvm-warum-ein-smart-home-eine-eigene-automatisierungssprache-braucht",{"level":90,"text":1356,"id":1357},"Was \"Logik\" in einem Smart Home tatsächlich bedeutet","was-logik-in-einem-smart-home-tatsachlich-bedeutet",{"level":90,"text":1359,"id":1360},"Kann man sich das nicht einfach zusammenklicken?","kann-man-sich-das-nicht-einfach-zusammenklicken",{"level":90,"text":1362,"id":1363},"Warum es \"Sprachen\" für Logik gibt","warum-es-sprachen-fur-logik-gibt",{"level":90,"text":1365,"id":1366},"Warum wir keine bestehende Sprache wie Python oder JavaScript genommen haben","warum-wir-keine-bestehende-sprache-wie-python-oder-javascript-genommen-haben",{"level":90,"text":1368,"id":1369},"Was VolangVM ist","was-volangvm-ist",{"level":96,"text":1371,"id":1372},"Der Compiler lebt nicht nur in Studio","der-compiler-lebt-nicht-nur-in-studio",{"level":90,"text":1374,"id":1375},"Was VolangVM Ihnen tatsächlich bringt","was-volangvm-ihnen-tatsachlich-bringt",{"level":90,"text":1377,"id":1378},"Die Volang-Standardbibliothek, also was jedes Skript ab Werk bekommt","die-volang-standardbibliothek-also-was-jedes-skript-ab-werk-bekommt",{"level":90,"text":1380,"id":1381},"Die Grenzen von Volang, also was es nicht tut","die-grenzen-von-volang-also-was-es-nicht-tut",{"level":90,"text":1383,"id":1384},"Risiken, die man kennen sollte","risiken-die-man-kennen-sollte",{"level":90,"text":1386,"id":1387},"Logikbausteine, die Ebene über Volang","logikbausteine-die-ebene-uber-volang",{"level":90,"text":1389,"id":1390},"Wie geht es weiter","wie-geht-es-weiter",{},1783173853181]