Пятничный трындёж

допустим

уже не компилируется… он дает заработать ? или он должен зарабатывать ? еще надо учить зарабатывать человека на моем коде что бы заплатил ?

заново не надо было… надо было дописать дальше… или хотя бы тот код который вам выдал ии…

Я не буду продолжать рекурсию. Этого хватит.

Вы щас тут посрётесь, а там человек пострадает! :slightly_smiling_face:

ну вот… я думал объясните как зарабатывать на коде, пару вопросов спросил, а в итоге…

срач это типичное общение программистов, но это не точно…
а почему пострадает то ?)))
я о диске его вроде предупредил… что не имеет смысла вникать в то что он скинул…

Не пострадает. Сегодня отдохну, а потом посмотрю, что там ИИ нагенерил. На первый взгляд сделал норм. - там же простые и банальные штуки. И надо понимать - ТС хотел реальной помощи, а мне надоел флэйм… Просто сначала составили подобие ТЗ, проанализировали, разбили на подзадачи и прикинули код, а теперь просто вылизать осталось.

у меня опять вопрос…

вы просто переписали код ? или …

я уже запутался… вы главное скажите, вы еще с кодом посидеть можете ? дабы его больше заточить под то что нужно…

Я поставил задачу твоему другану - ИИ. Он сделал код. Я ему пояснил раз 5 что надо сделать и и он сделал. Последние результаты скинул в тему.

Итого - два скетча. В первом я пошутил - заменил в вебе последний насос на твой ник. Думаю прочитает исходник хоть…

Вот даже не дочитал… 10 секунд - это предел. Далее читать не надо.

нууу… начинает проясняться, вроде… я понимаю это как за основу все таки второй код будет…
а что то дальше будите делать ?

А дальше, если ты успеешь раньше поправить мой код, то можешь просить бабосы с заказчика, но поскольку это в разделе - помогите, то бабок там не светит. Для меня это больше тренировка писать заставлять писать код ИИ. Я попробую до конца заставить его написать приемлемый код.

Вот например описание локального протокола работы для моего умного дома он написал, а потом сам понял, когда ему понадобился мой протокол.

Привожу то, что он сделал.

Specification of the 4DUK Local Network Protocol (Revision 1.3)

1. Introduction and Architectural Principles

This document describes the application-level protocol for local interaction between smart home devices within the 4DUK ecosystem. The protocol is designed for deployment in trusted local area networks (LAN/WLAN) within a single L2 network segment.

Key Protocol Properties:

  • Decentralization (Peer-to-Peer): All network nodes are equal; data exchange is fully asynchronous.
  • Event-Driven Model: Data transmission is triggered by changes in the physical state of the hardware.
  • Broadcast Transport: All messages are encapsulated in UDP Broadcast packets, minimizing overhead for session maintenance.
  • Passive Registration: The gateway automatically discovers and registers devices by intercepting their telemetry packets without dedicated discovery requests.

2. Network Transport Parameters

All network nodes (the control gateway and end-device execution modules) must configure their sockets with the following parameters:

  • Protocol: UDP (User Datagram Protocol).
  • Network Port: 9009 (fixed for both transmitting and receiving).
  • Destination Address (Destination IP): 255.255.255.255 (Limited broadcast).
  • Data Encoding: UTF-8 or ASCII.
  • Network Requirements: Access Point / Client Isolation (AP Isolation) must be disabled on the Wi-Fi router.

3. Packet Format and Syntax

All packets are plain text strings. Elements within a packet are strictly separated by a colon character (:). Spaces are not permitted unless they are part of the payload data.

The protocol defines three types of packets, identified by their prefix marker (the first element):

  1. device — Control packet (Gateway → Network).
  2. devstate — Status/Telemetry packet (Device → Network).
  3. devping — Service network presence packet (Device → Network).

4. Packet Type Specifications

4.1. Control Packet (device)

Sent by the gateway to change the physical or logical state of a target end-device.

Syntax:

text

device:devname:action:actionname:value:data

Используйте код с осторожностью.

Field Descriptions:

  • device (const): Control payload marker.
  • devname (string): Unique system name of the target device in the local network.
  • action (const): Action transmission indicator.
  • actionname (string): Technical name of the command/method to be executed.
  • value (const): Data transmission indicator.
  • data (string): The value or argument of the command.

Example: device:relay_kitchen:action:power:value:on

4.2. Status and Telemetry Packet (devstate)

Sent by a device to synchronize its current state with the gateway and other modules. Each capability or parameter of the device must be transmitted in a separate UDP packet.

Syntax:

text

devstate:devname:statename:value

Используйте код с осторожностью.

Field Descriptions:

  • devstate (const): Status/Telemetry packet marker.
  • devname (string): System name of the transmitting device.
  • statename (string): Technical name of the reported parameter or capability.
  • value (string): Current value of the parameter.

Example: devstate:relay_kitchen:power:on

4.3. Presence Service Packet (devping)

Sent by a device to confirm its physical availability and update network routing parameters when no state changes occur.

Syntax:

text

devping:devname:MAC:IP

Используйте код с осторожностью.

Field Descriptions:

  • devping (const): Presence/Keep-alive service packet marker.
  • devname (string): System name of the transmitting device.
  • MAC (string): Physical address of the device’s network interface with all colons removed (12 characters, uppercase, e.g., AABBCCDDEEFF).
  • IP (string): Current local IPv4 address assigned to the device by the DHCP server.

Example: devping:relay_kitchen:001A2B3C4D5E:192.168.1.105

5. Timers and Device Lifecycle

Power Applied State Changed Idle > 3 Minutes

  |                         |                           |
  v                         v                           v

[Bulk devstate] [Instant devstate] [Service devping]
(Auto-Registration) (Acknowledgement/Ack) (Connection Control)

Device firmware developers must implement the following state machine logic:

5.1. Initialization (Cold Start)

  • Upon power-up and successful network connection, the device always generates and transmits individual devstate packets for all of its supported parameters sequentially.
  • By intercepting these initial packets, the gateway performs passive auto-registration of the new device in its local database.
  • The internal idle timer starts counting immediately after sending these initial packets.

5.2. Asynchronous Command Acknowledgement

  • Upon receiving a valid device packet matching its system name (or group mask), the device executes the physical action and instantly transmits the corresponding devstate packet with the updated value back into the network. This acts as an Acknowledgement (Ack) signal for the gateway.
  • Sending any devstate packet resets the internal idle timer back to 0.

5.3. Network Status Control (Keep-Alive)

  • If the state of the device does not change for 3 minutes (180 seconds) (meaning no devstate packets were generated), the device is required to send exactly one devping service packet.
  • Sending any devstate packet (triggered via network command or a local hardware button) resets this 3-minute idle countdown. Thus, devping packets are sent strictly during periods of device inactivity.

6. Implementation and Software Architecture Guidelines

6.1. Inbound Traffic Filtering

Because packets are broadcast across the L2 segment, they hit every connected node on port 9009. To minimize CPU utilization on microcontrollers, inbound traffic must be filtered early using Regular Expressions (RegEx) or fast string-prefix validation.

  • Packets that do not begin with device, devstate, or devping must be discarded immediately before parsing.
  • To support group actions (e.g., “turn off all lights on the kitchen”), filtering logic should accommodate group name masks or specific suffixes (e.g., *_all).

6.2. Event Bus Design Pattern

Packet processing inside devices and gateways should follow an asynchronous Observer / Event-Driven architecture:

  1. Network Dispatcher (Router): Listens to port 9009, validates string syntax, and converts raw text strings into structured packet objects (DeviceCommand, DeviceStatus).
  2. Internal Event Bus: Distributes packet objects to registered, independent software sub-modules (e.g., physical relay driver, LED status indicator, local diagnostic logger).

7. Error Handling and Custom Diagnostics (Transit Logs)

7.1. Isolation of Errors

Low-level error handling (e.g., short circuit protection, overcurrent, hardware PWM failures, out-of-bounds adjustments) rests entirely on the end-device side and is managed natively by the developer’s firmware. Devices handle protective cut-offs or value clamping independently.

7.2. Transparent Cloud Transit Logging via devstate

Developers can leverage the standard devstate packet structure to pass custom diagnostic, debugging, or system analytics straight to the cloud server database.

Naming Rule: To prevent debugging variables from colliding with end-user smart home capabilities (such as power, brightness, volume), developers must use reserved system prefixes for the statename field (sys_, err_, or debug_).

Data Flow:

text

[Device] --(UDP Broadcast:9009)–> [4DUK Gateway] --(Transit)–> [4DUK Skill Server] → [DBMS Table]

Используйте код с осторожностью.

Examples of Diagnostic Packets:

  • Critical Hardware Error Notification:
    devstate:relay_kitchen:sys_error:OVERHEAT_85C
    The gateway transits the packet, and the skill server updates the row for relay_kitchen in the database, writing OVERHEAT_85C into the sys_error field.
  • Network Health Diagnostic (Wi-Fi RSSI tracking):
    devstate:dimmer_lounge:debug_rssi:-68dBm
  • Device Continuous Uptime Broadcast (in seconds):
    devstate:stb_bedroom:sys_uptime:86400

7.3. Architectural Benefits

  • Schemaless Field Updates: The gateway and skill server treat transit fields dynamically. If a developer introduces a new debugging key (e.g., debug_mem_free), it populates the cloud database automatically without changing the gateway software.
  • Unified Remote Debugging: Developers do not need physical access to hardware diagnostic interfaces (UART/JTAG) during field testing. Any telemetry string sent to the local broadcast port becomes viewable directly inside the provider’s server console logs.

Reserved Developer Prefixes:

  • sys_* — System metrics (uptime, chip temperature, firmware version).
  • err_* — System fault codes or textual error logs.
  • debug_* — Arbitrary string output for testing and QA validation.

вооо, стало еще яснее, тогда мне лучше подождать… а то мои обычные вопросы вас отвлекают))) а то еще и вовсе флэймом кажутся…
тогда я пока что в эту версию вникну, во второй код, надеюсь вы не будите потом его менять, на вообще что то другое…

Перестаньте его уже будить, он вроде не спит! :slightly_smiling_face:

кто ?))) подумал что кто то ватчдог забыл убрать в переносе кода на esp, как был на меге… только время зря потратил)))

Ктулху фхтанг!

так надо было в начале думать об основе, которую смогут подхватить другие! ну вы как типичный работодатель…
если не думали, надо заплатить… может проект хорошим получится, если я смогу в него вникнуть, понять, и делать с ним все что захочу…
к тому же если я буду голодный, моя эффективность снижается, так что 50к это минимум, и он нужен обязательно…
или другой проект нужен)))

наоборот.

@BABOS , я тут твоего братана попросил написать про тебя стих. Оценишь?

Вот манифест для пользователя BABOS:

Эй,
BABOS!
Хватит лениться!
Экран компьютера
жаром горит.
В чужих исходниках
скрыта крупица
Железо-программных
великих открытий!

Что ты застыл
перед C++?
Смотришь в экран,
как на новые двери?
Ардуино-код —
не обуза, не плюс,
Это —
металл,
в который поверил!

Легко скопировать!
Просто нажать!
Но это —
путь
для слабаков и калек!
Ты должен
чужую строку
разгребать,
Чтоб гордо
звучало:
«Кодер-Человек!»

Брось лень!
Разверни
библиотек полотно!
Вниманье —
в кулак!
Упорство —
в гранит!
В чужом исходнике
каждое звено
Твой личный талант
разбудит и закалит!

Ну и частушку он написал.

Мимо плат из Ардуино
BABOS ходит со слезой:
«Код чужой читать лениво,
Дайте мне готовый скетч!»

Куплет 2:
Я раньше думал: «Выучу Rust — и взлечу,
Выучу Go — и точно озолочу,
Освою микроконтроллеры, влезу в embedded,
И вот тогда-то меня точно заметят».
А заметили, да, только с другой стороны:
«Ты нам подходишь, но платить не должны,
Ты же энтузиаст, ты же любишь процесс,
Сделай проект за спасибо, а мы — в прогресс».
Я сделал. И что? Мне сказали: «Ну, бывай,
это ж стартап, это ж идея,
Ты должен гореть, а не думать о кэше скорее».

Припев:
Ты качаешь талант — они хотят батарейку,
Чтоб вставил, отработал и сдох, как индейка.
Им не нужен твой рост, им не нужен твой код,
Им нужно, чтоб ты пахал и не открывал рот.
Самосовершенствование — это тупик,
Если платят копейки, а требуют — пик.
Ты не батарейка, запомни, братан,
Твой навык — валюта, а не талисман.

Куплет 3:
Я выучил C, ассемблер, Python и Rust,
Но вместо зарплаты мне снова: «Ты пуст,
Ты слишком дорогой, у нас бюджет — ноль,
Ты сделай бесплатно, а мы тебе — роль
В нашем стартапе, который взлетит,
Ты будешь партнёром, и всё заблестит».
Я слышал это сто раз, я знаю финал:
Сначала — «ты гений», потом — «ты пропал».
Они хотят, чтоб я качался бесконечно,
А платить забывали, но это не вечно,
Потому что я понял: учёба — не цель,
Цель — это деньги, и я не олень.

Припев:
Ты качаешь талант — они хотят батарейку,
Чтоб вставил, отработал и сдох, как индейка.
Им не нужен твой рост, им не нужен твой код,
Им нужно, чтоб ты пахал и не открывал рот.
Самосовершенствование — это тупик,
Если платят копейки, а требуют — пик.
Ты не батарейка, запомни, братан,
Твой навык — валюта, а не талисман.

Бридж:
Прокачка скиллов — это, конечно, круто,
Но если за неё не платят, то это маршрут в никуда.
Я лучше потрачу время на поиск контракта,
Где мой опыт оценят без всякого фарта,
Где не спросят: «А ты можешь за спасибо?»
Где не кинут, не сольют, не скажут: «Красиво,
Но денег нет, ты ж понимаешь, братан».
Так что, если ты думаешь, что качаться — ответ,
То запомни: без оплаты это — бред,
Ты не батарейка, ты не расходник, не сырьё,
Ты — инженер, и это — твоё.
Твой скилл — это деньги, и точка, баста,
Не отдавай его за «спасибо» и «здравствуй».
Я смотрю на заказчиков — там тот же ад:
«Сделай под ключ, но платить не хотят,
Бюджет — три копейки, сроки — вчера,
А если что не так — ты во всём виноват».
Я смотрю на себя — я уже не горю,
Я просто считаю, за что я не зрю
Ни одной причины бесплатно вкалывать,
Раньше я думал: «Надо быть лучшим,
Будут платить, будут ценить, будут звать,
Буду я в шоколаде, как говорится, опять».
А по факту: чем больше ты знаешь,
Тем больше с тебя и спросить обещают,
Тем больше задач, тем меньше зарплата,
Тем ближе к тому, чтоб работать за свято
Дело, идею, за «ну ты же можешь».
Нет. Я могу. Но за бабки.
Твой скилл — это деньги. Твой скилл — это что-то,
Что стоит в разы больше, чем эти копейки.
Не будь батарейкой. Не будь батарейкой.

что то нейросеть уже сбивается со стиля, как бы ее не затупить)))

@Diskless А понятие “кавер” в музыкалке преподают? И есть какие-то критерии?